如何将道具传递给{this.props.children}
我试图找到正确的方式来定义一些可以以通用方式使用的组件:
<Parent>
  <Child value="1">
  <Child value="2">
</Parent>
  当然,在父组件和子组件之间进行渲染时有一种逻辑,你可以将<select>和<option>想象成这种逻辑的一个例子。 
这是针对该问题的虚拟实现:
var Parent = React.createClass({
  doSomething: function(value) {
  },
  render: function() {
    return (<div>{this.props.children}</div>);
  }
});
var Child = React.createClass({
  onClick: function() {
    this.props.doSomething(this.props.value); // doSomething is undefined
  },
  render: function() {
    return (<div onClick={this.onClick}></div>);
  }
});
  问题是,无论何时使用{this.props.children}来定义一个包装组件,如何将某些属性传递给它的所有子项? 
您可以使用React.Children遍历子元素,然后使用React.cloneElement使用新的道具(浅层合并)克隆每个元素,例如:
const Child = ({ doSomething, value }) => (
  <div onClick={() => doSomething(value)}>Click Me</div>
);
class Parent extends React.PureComponent {
  doSomething = (value) => {
    console.log('doSomething called by child with value:', value);
  }
  render() {
    const { children } = this.props;
    const childrenWithProps = React.Children.map(children, child =>
      React.cloneElement(child, { doSomething: this.doSomething }));
    return <div>{childrenWithProps}</div>
  }
};
ReactDOM.render(
  <Parent>
    <Child value="1" />
    <Child value="2" />
  </Parent>,
  document.getElementById('container')
);
小提琴:https://jsfiddle.net/2q294y43/2/
要获得一个稍微干净的方法,请尝试:
<div>
    {React.cloneElement(this.props.children, { loggedIn: this.state.loggedIn })}
</div>
注意 :只有在有一个孩子的情况下,它才有效,它是一个有效的React元素。
尝试这个
<div>{React.cloneElement(this.props.children, {...this.props})}</div>
它为我使用react-15.1。
链接地址: http://www.djcxy.com/p/4743.html