在react.js中使用没有这个的setState

时间:2016-10-04 23:34:44

标签: javascript reactjs

我是React的新手(一般来说也是Javascript的新手),并试图围绕可以用setState完成的工作来重新渲染页面上的React元素。

有没有办法在一个组件中使用setState来改变完全不同的元素的状态(即可能只共享DOM根节点的组件)?我试图实现这一点,但我得到错误“myElementOne.setState不是一个函数”。

还有另一种方法我应该接近这个吗?

NSManagedObjectContext

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式实现此目的:http://codepen.io/PiotrBerebecki/pen/YGEmBE

这个想法是:

  1. 维护父组件(App
  2. 中的状态
  3. 将此状态传递给ElementOne
  4. 通过传递给ElementTwo
  5. 的回调函数传递修改状态的能力

    完整代码:

    var App = React.createClass({
        getInitialState() {
          return ({
            isShowingInParent: true
          });
        },
    
        toggleInParent() {
          this.setState({
            isShowingInParent: !this.state.isShowingInParent
          });
        },
    
        render() {
            return (
                <div>
                    <ElementOne id="abc12345" isShowing={this.state.isShowingInParent}/>
                    <ElementTwo toggle={this.toggleInParent}/>
                </div>
            );
        }
    });
    
    var ElementOne = React.createClass({
        render() {
            if (this.props.isShowing) {
                return (
                    <div id="abc12345">
                        <h1>Hello World!</h1>
                    </div>
                );
            } else {
                return <div/>;
            }
        }
    });
    
    var ElementTwo = React.createClass({
        render() {
            return <a href="#" onClick={this.props.toggle.bind(this)}>Click here to Show/Hide!</a>;
        }
    });
    
    ReactDOM.render(<App/>,document.getElementById('content'));