React.Children
在典型的React数据流模型中,props 是组件对外的接口。props 作为父子组件沟通的桥梁,为组件的通信和传值提供了重要手段。
this.props 对象的属性与组件的属性一一对应,但其中有一个比较特殊的参数:this.props.children。它表示组件所有的子节点。
在组件内部使用 this.props.children,可以拿到用户在组件里面放置的内容。
数据类型与检查
数据类型
this.props.children 的值有三种可能:
- 如果当前组件没有子节点,它就是
undefined。 - 如果有一个子节点,数据类型是
object。 - 如果有多个子节点,数据类型就是
array。
PropTypes 类型检查
既然 props.children 属于props中的一个属性,自然可以使用 PropTypes 进行类型检查。
但是,如上所述,根据传入情况的不同,props.children 的数据类型也不同,因此使用 PropTypes 对props.children 进行类型检查时,要注意依照实际情况进行设置。
React.Children 方法
React 提供了工具方法 React.Children 来处理 this.props.children。
React.Children.map
object React.Children.map(object children, function fn)
遍历 props.children ,在每一个子节点上调用 fn 函数。
React.Children.forEach
React.Children.forEach(object children, function fn)
类似于 React.Children.map(),但是不返回对象。
React.Children.count
number React.Children.count(object children)
返回 children 当中的组件总数。
React.Children.only
object React.Children.only(object children)
返回 children 中仅有的子节点。如果在 props.children 传入多个子节点,将会抛出异常。