我想我可以做到这一点,但我收到了这个错误:
TypeError:child.constructor.ConvenienceConstructor不是函数
我在页面中有一个组件,ala:
//此内容位于html页面中。我的组件读取了这个孩子,但我似乎无法修改它的任何部分..只需重写它。
<MyComponent prop1="somevalue">
<div className="myclass1"> some child content that is dynamic </div>
</MyComponent>
现在,在我的组件中,因为内部子(ren)是动态的,我需要根据某些条件更改该类。但我不能。我得到了上面提到的错误。
我试过了:
var childContent = React.Children.map(this.props.children,
function(child) {
return React.cloneWithProps(child,
{ className: 'myNEWClass' } );
});
我也尝试了 cloneElement ,但也无效。
不起作用。我试着直接访问孩子,ala:
child._store.props.className // but can't seem to change it, seems immutable.
那么,我怎样才能改变这门课程呢?
感谢,
答案 0 :(得分:0)
道具应该是不可变的,所以不要将className作为道具传递,而是在名为defaultClass的道具中进行父传递。在map方法中,您可以添加一个额外的prop,例如overrideClass。最后,在实际子组件的render()方法中,您需要一些逻辑来将className设置为overrideClass或defaultClass。通过这种方式,您不必改变道具。