我已经阅读了有关如何显示/隐藏组件的方法,并对其进行了一些修改,但是,我的修改无效。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中。
答案 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