如何使用reactjs中的按钮隐藏组件?

时间:2017-06-02 05:28:20

标签: javascript reactjs cookies

我已经阅读了有关如何显示/隐藏组件的方法,并对其进行了一些修改,但是,我的修改无效。enter link description here

我的工作代码不在:

var Child = React.createClass({
  render: function() {
    return (
       <div className="container">
         <p>Welcome to our website</p>
         <button  onClick={this.onClick}>Click me to close</button>
       </div>
    );
  }
});

var ShowHide = React.createClass({
  getInitialState: function () {
    return { childVisible: ture };
  },
  
  render: function() {
    return(
      <div>
        {
          this.state.childVisible
            ? <Child />
            : null
        }
      </div>
    )
  },
  
  onClick: function() {
    this.setState({childVisible: !this.state.childVisible});
  }
});
 
React.render(<ShowHide />, document.getElementById('container'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.2/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.2/react-dom.min.js"></script>

<div id="container">
    <!-- This element's contents will be replaced with your component. -->
</div>

我有两个目标: 1.第一个目标是添加一个按钮来关闭此欢迎框。 2.第二个目标是向其添加一个cookie,以便在用户第一次访问此网站时向用户显示此欢迎框,一旦他们点击关闭它,如果不清除它将不再显示cookie中。

2 个答案:

答案 0 :(得分:1)

您必须将onClick函数作为道具从ShowHide传递到Child

<Child onClick={this.onClick} />

然后Child中的按钮看起来像这样

<button onClick={this.props.onClick}>...</button>

你的initialState也有一点错字,你写了ture而不是true

答案 1 :(得分:0)

作为补充提示,我建议您使用ES6类而不是React的createClass。更好的性能和更高的标准:D