您的位置:首页 > Web前端 > React

ReactJs中的this.props.children总结

2016-05-13 16:50 676 查看
this.props 对象的属性与组件的属性一一对应,但是有一个例外,就是 this.props.children 属性。它表示组件的所有子节点

var NotesList = React.createClass({
render: function() {
return (
<ol>
{
React.Children.map(this.props.children, function (child) {
return <li>{child}</li>;
})
}
</ol>
);
}
});

ReactDOM.render(
<NotesList>
<span>hello</span>
<span>world</span>
</NotesList>,
document.body
);


上面代码的 NoteList 组件有两个 span 子节点,它们都可以通过 this.props.children 读取,运行结果如下。

hello

world

这里需要注意, this.props.children 的值有三种可能:如果当前组件没有子节点,它就是 undefined ;如果有一个子节点,数据类型是 object ;如果有多个子节点,数据类型就是 array 。所以,处理 this.props.children 的时候要小心。

React 提供一个工具方法 React.Children 来处理 this.props.children 。我们可以用 React.Children.map 来遍历子节点,而不用担心 this.props.children 的数据类型是 undefined 还是 object。更多的 React.Children 的方法,请参考官方文档 https://facebook.github.io/react/docs/top-level-api.html#react.children

var HelloWorld = React.createClass({
render:function(){
return (
<ul>
{
React.Children.map(this.props.children, function (value,key) {
return <li>{value}----{key}</li>;
})
}
</ul>
);
}
});
ReactDOM.render(
<HelloWorld>
<span>思考思考</span>
<span>瞬间即逝</span>
<span>阿达瓦得</span>
</HelloWorld>,
document.getElementById('root'));


输出结果为:

思考思考—-0

瞬间即逝—-1

阿达瓦得—-2

map遍历数组

var names = ['Alice', 'Emily', 'Kate'];
ReactDOM.render(
<div>
{
names.map(function (name) {
return <div>Hello, {name}!</div>
})
}
</div>,
document.getElementById('example')
);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: