React中props.children和React.Children的区别

在React中,当涉及组件嵌套,在父组件中使用props.children把所有子组件显示出来。如下:

function ParentComponent(props){
return (


{props.children}

)
}

如果想把父组件中的属性传给所有的子组件,该怎么做呢?

--使用React.Children帮助方法就可以做到。

比如,把几个Radio组合起来,合成一个RadioGroup,这就要求所有的Radio具有同样的name属性值。可以这样设计:把Radio看做子组件,RadioGroup看做父组件,name的属性值在RadioGroup这个父组件中设置。

首先是子组件:

//子组件
function RadioOption(props) {
return (

)
}

然后是父组件,不仅需要把它所有的子组件显示出来,还需要为每个子组件赋上name属性和值:

//父组件用,props是指父组件的props
function renderChildren(props) {

//遍历所有子组件
return React.Children.map(props.children, child => {
if (child.type === RadioOption)
return React.cloneElement(child, {
//把父组件的props.name赋值给每个子组件
name: props.name
})
else
return child
})
}

//父组件
function RadioGroup(props) {
return (


{renderChildren(props)}

)
}

function App() {
return (





)
}

export default App;
以上,React.Children.map让我们对父组件的所有子组件又更灵活的控制。

项目地址:https://github.com/darrenji/ReactNestedComponentExample

posted @ 2016-07-07 15:53  Darren Ji  阅读(9575)  评论(0)    收藏  举报

我的公众号:新语新世界,欢迎关注。