我可以在其父级的反应组件中设置子道具吗?

时间:2015-09-21 16:09:44

标签: javascript reactjs

是否有可能做出这样的反应:

binary name = binary.Parse(Console.ReadLine());

当我尝试做类似的事情时,我得到:var App = React.createClass({ getInitialState: function(){ return { children: [<div/>, <div/>], comp: '' }; }, componentWillMount: function(){ this.setState({ comp: <SomeComponent children={this.state.children}/> }); }, render: function(){ return ( <div> {this.state.comp === '' ? this.state.children : this.state.comp} </div> ); } }); 所以我认为答案是否定的,但我认为必须有某种方式考虑

Uncaught TypeError: Cannot read property '_currentElement' of null

其中<SomeComponent> <div/> </SomeComponet> 呈现<SomeCompent/>,有效。但是在这种特殊情况下,我得到了相同的错误,但是如果你看一下像React-Bootstrap https://react-bootstrap.github.io/这样的东西,它必须是可能的。

1 个答案:

答案 0 :(得分:-1)

为什么要将html标签作为状态传递?我不是说不好,但总有一个更好的解决方案。假设一个子组件将状态布尔值true或false传递给父组件(Flux - Action通过子组件传递给存储,父组件可以通过onChange事件获取状态)。有了它,您可以调用父元素来呈现不同的视图。

_onChange: function() {
    this.setState(this._getStateFromStores());
},

render: function() {
    var view;

    if (this.state.childAction) {
        view = <SomethingTrue/> ;
    }
    if (!this.state.childAction) {
        view = <SomethingFalse/> ;
    }

    return (
        <div>
            {view}
        </div>
);