我正在尝试使用React.js中的按钮在我的页面上切换内容如果我按下按钮,我希望内容消失。如果我再次按下它,我希望内容再次出现。我尝试了所有我能想到的东西,但似乎没有任何效果。我最初尝试了一个三元语句,看看我是否可以切换,但它只是打破了我的应用程序。有人能告诉我如何改进项目的这一部分吗?这就是我所拥有的:
//App.js
import React, { Component } from 'react';
class App extends Component {
constructor(props) {
super(props);
this.state = {
isToggle: false
};
}
handleClick(e) {
this.setState({ !isToggle ? isToggle: true : isToggle: false });
}
render() {
const style = {
display: none
};
return (
<div>
<h1 className="text-xs-center">List of items:</h1>
<button onClick={this.handleClick.bind(this)} className="btn btn-primary">Toggle</button>
<div className="container" style={!isToggle ? style.display = none : style.display = block}>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</div>
</div>
);
}
}
export default App;
基本上,我想切换第1项,第2项,第3项,第4项。
答案 0 :(得分:3)
如果我要组成组件,这将是它的形状。
import React, { Component } from 'react';
class App extends Component {
constructor(props) {
super(props);
this.state = {isToggle: false};
this.handleClick = this.handleClick.bind(this);
}
handleClick(e) {
this.setState({isToggle: !this.state.isToggle});
}
render() {
return (
<div>
<h1 className="text-xs-center">List of items:</h1>
<button
className="btn btn-primary"
onClick={this.handleClick}
>
Toggle
</button>
<div
style={{display: this.state.isToggle ? 'block': 'none'}}
className="container"
>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</div>
</div>
);
}
}
export default App;
答案 1 :(得分:2)
您可以使用条件渲染代替CSS:
import React, { Component } from 'react';
class App extends Component {
constructor(props) {
super(props);
this.state = {
isVisible: false
};
this.onToggle = this.onToggle.bind(this);
}
onToggle(e) {
this.setState({isVisible: !this.state.isVisible});
}
render() {
return (
<div>
<h1 className="text-xs-center">List of items:</h1>
<button onClick={this.onToggle} className="btn btn-primary">Toggle</button>
{this.state.isVisible &&
<div className="container">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</div>
}
</div>
);
}
}
export default App;
答案 2 :(得分:1)
试试我的方式
print(paste("mean =",
mean(s[s$flavor == "original", "age"]),
"sd =",
sd(s[s$flavor == "original", "age"])))
答案 3 :(得分:0)
更改此行..
<div className="container" style={!isToggle ? style.display = none : style.display = block}>
为...
<div className="container" style={!isToggle ? {display:'none'} : {display: 'block'}} >
内联'style'应该返回一个JSON对象{{key:'value,key2':'value2'}}。
答案 4 :(得分:0)
您可以使用箭头功能来做到这一点。在我看来要简单得多。
import React, { Component } from 'react';
class App extends Component {
constructor(props) {
super(props);
this.state = {isToggle: false};
}
render() {
return (
<div>
<h1 className="text-xs-center">List of items:</h1>
<button
className="btn btn-primary"
onClick={ () => this.setState({ isToggle: !this.state.isToggle }) }
>
Toggle
</button>
<div
style={{display: this.state.isToggle ? 'block' : 'none'}}
className="container"
>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</div>
</div>
);
}
}
export default App;