如我们所了解的, this.props.children
的取值有三种情况,如果当前组件没有子组件,则返回 undefined
,如果有一个元素,则返回数据类型为 object
,如果有多个元素则返回类型为 array
,这样每次都要写一大堆的判断语句,并针对不同的返回结果执行不同的操作,这样将会非常繁琐, 好在 React.Children
提供了一些工具方法处理 this.props.children
这个不透明的数据结构。
React.Children.map
React.Children.map(children, function[(thisArg)])
遍历 children
并返回一个数组,如果 children
是 null
或者 undefined
将返回 null
或者 undefined
而不是一个空数组
React.Children.forEach
React.Children.forEach(children, function[(thisArg)])
类似于 React.Children.map
,遍历 this.props.children
但是不返回一个数组。
React.Children.count
React.Children.count(children)
返回子组件中的组件数目,等于 map
和 forEach
的回调函数被调用次数。
React.Children.only
React.Children.only(children)
如果 children
中有一个唯一的元素或者组件,则返回 children
中唯一的子组件或元素,否则,如果没有组件或者组件数大于1,会报错。
class Application extends React.Component { |
React.Children.toArray
React.Children.toArray(children)
将 children
结构返回为一个数组,并为每一个元素分配 key
值,对于需要操作 children
集合的元素来说很方便。