0

我正在尝试使用按钮来切换 UI 显示。当用户单击按钮时,它将显示相应的 UI。并且当用户再次点击时将其隐藏。我使用 setState 来切换“showItemBank”的值,但 UI 只显示一次,然后默认返回不可见。我错过了什么重要的东西吗?

这是我的应用程序使用 Meteor 和 React 的 jsx。

App = React.createClass ({

mixins: [ReactMeteorData],

getInitialState() {
    return {
      showItemBank: false
    }
},

onItemBankClick(event) {
    this.setState({
        showItemBank : ! this.state.showItemBank
    });

},

render() {
    var classItemBank = ""; 
    var classNewQuestion = ""; 
    if(this.state.showItemBank === false){ 
        classItemBank = "displayNone"; 
    } 
    if(this.state.showItemBank === true){ 
        classItemBank = "displayContent"; 
    }

    return (
        <div className="container">
            <header>
                <form className="new-task" >
                    <div>
                        <button onClick={this.onItemBankClick} className="menu">Select From the Item Bank</button>
                        <button className="menu">Add New Questions</button>
                    </div>
                    <div className={classItemBank}> Hi i am from ItemBank </div>    
                </form>

            </header>
        </div>
    );
}

  });
4

2 回答 2

2

尝试这个

onItemBankClick(event) {
    event.preventDefault();
    this.setState({
        showItemBank : ! this.state.showItemBank
    });

}

默认情况下,按钮将尝试提交页面

于 2015-10-19T23:16:13.480 回答
1
onItemBankClick(event) {

 // stop the event bubbling to parent, in this case <form>
 event.stopPropagation(); 

 // prevent default browser action
 event.preventDefault();

 this.setState({
    showItemBank : ! this.state.showItemBank
 });

}
于 2015-12-31T18:48:21.403 回答