我有一个抽屉组件,带有一个打开这个抽屉的按钮. 我想通过点击页面上的任何地方来关闭抽屉,除了抽屉区域.我试过这段代码.它适用于开放,但它不适合关闭. var Child = React.createClass({ r
我想通过点击页面上的任何地方来关闭抽屉,除了抽屉区域.我试过这段代码.它适用于开放,但它不适合关闭.
var Child = React.createClass({ render: function() { return ( <div className="chatBar"> <div onClick={this.onClick} className="closeBTN"> <img src="../src/contents/images/svg/close.svg"/> </div> <Tab /> </div> ); } }); var ChatBar = React.createClass({ getInitialState: function () { return { childVisible: false ,childInVisible: true ,}; }, render: function() { return( <div> <div onClick={this.onClick} className="chatBTN"> <img src="../src/contents/images/svg/chat.svg"/> </div> { this.state.childVisible ? <Child /> : null } </div> ) }, onClick: function() { this.setState({childVisible: !this.state.childVisible}); }, onClickClose: function(){ this.setState({childInVisible: !this.state.childInVisible}); }, }); export default ChatBar;请查看工作演示 JSFiddle.
var Child = React.createClass({ render: function() { return ( <div className="chatBar"> <div onClick={this.props.onClick} className="closeBTN"> <img src="http://www.freeiconspng.comhttp://img.558idc.com/uploadfile/silver-close-button-png-15.png"/> </div> </div> ); } }); var ChatBar = React.createClass({ getInitialState: function () { return { childVisible: false }; }, render: function() { return( <div> <div onClick={this.onToggle} className="chatBTN"> <img src="http://www.omeglechat.eu/wp-contenthttp://img.558idc.com/uploadfile/2016/10/omegle-mnogochat.png"/> </div> { this.state.childVisible ? <Child onClick={this.onToggle.bind(this)} /> : null } </div> ) }, onToggle: function() { this.setState({childVisible: !this.state.childVisible}); } }); React.render(<ChatBar />, document.body);
首先,在州内使用一个标志:
onToggle: function() { this.setState({childVisible: !this.state.childVisible}); }
其次,为了调用子组件中的函数(onClick),您需要通过< Child onClick = {this.onToggle.bind(this)} />传入处理程序,并在子组件中调用它通过onClick = {this.props.onClick}