javascript - React: React.addons.cloneWithProps 为什么不使用组件?

  显示原文与译文双语对照的内容
0 0

我不知道这是一个 Bug,还是如何工作,但我注意到 React.addons.cloneWithProps 工作的标准标签( 像 <div> ) 但不是组件。

这是这个问题的一个例子。 我希望两个div都有一个红色 background,但是用一个组件创建的那个。

http://jsfiddle.net/ydpk2dp7/1/

var Main = React.createClass({
 render: function() { 
 children = React.Children.map(this.props.children, function (c, index) {
 return React.addons.cloneWithProps(c, {
 style: {
 background: 'red'
 }
 });
 });
 return (
 <div>
 {children}
 </div>
 );
 }, 
});
var Comp = React.createClass({
 render: function() { 
 return (
 <div>{this.props.children}</div>
 ); 
 }
});
React.render(
 <Main>
 <div>1</div>
 <Comp>2</Comp>
 </Main>
, document.body);
时间:原作者:1个回答

0 0

我不确定这是否是 Bug,但是我将会包装父组件不拥有的父组件中的反应组件。 below 提供了一个工作结果。

var Main = React.createClass({
 render: function() { 
 children = React.Children.map(this.props.children, function (c, index) {
 return React.addons.cloneWithProps(c, {style: {background: 'red'}});
 });
 return (
 <div>
 {children}
 </div>
 );
 }, 
});
var Comp = React.createClass({
 render: function() { 
 return (
 <div>{this.props.children}</div>
 ); 
 }
});
React.render(
 <Main>
 <div>
 <Comp>2</Comp>
 <Comp>3</Comp>
 <Comp>4</Comp>
 </div>
 </Main>
, document.body)
原作者:
...