reactjs - Reactjs:如何在单击按钮时一次显示一个切换的内容
问题描述
下面的代码用于在按钮单击时切换内容,它的效果非常好,因为每个单击的按钮都会显示它们各自的内容。
这是我想要实现的。
现在我的任务是在单击按钮时显示一个折叠内容记录。
这就是我的意思,当我单击第一个按钮时,内容将被切换并显示。
当我点击第二个按钮时,我只想看到第二个点击按钮的内容,同时隐藏第一个按钮的内容,依此类推。谢谢
这是到目前为止的代码
import React, { Component, Fragment } from "react";
import { render } from "react-dom";
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
shown: true,
shown1: true,
shown2: true,
shown3: true,
};
}
componentDidMount() {
this.setState({
});
}
toggle1() {
this.setState({
shown1: !this.state.shown1
});
}
toggle2() {
this.setState({
shown2: !this.state.shown2
});
}
toggle3() {
this.setState({
shown3: !this.state.shown3
});
}
render() {
var shown = {
display: this.state.shown ? "block" : "none"
};
var hidden1 = {
display: this.state.shown1 ? "none" : "block"
}
var hidden2 = {
display: this.state.shown2 ? "none" : "block"
}
var hidden3 = {
display: this.state.shown3 ? "none" : "block"
}
return (
<div>
<label>
<ul>
<button onClick={this.toggle1.bind(this)}>Toggle 1</button>
<button onClick={this.toggle2.bind(this)}>Toggle 2</button>
<button onClick={this.toggle3.bind(this)}>Toggle 3</button>
<h2 style={ hidden1 }> Toggle record 1 appears Here</h2>
<h2 style={ hidden2 }> Toggle record 2 appears Here</h2>
<h2 style={ hidden3 }> Toggle record 3 appears Here</h2>
</ul>
</label>
</div>
);
}
}
解决方案
稍微重构了一下。您可以应用一些 css 来使内容折叠。
从“反应”导入反应,{组件};从“react-dom”导入 ReactDOM;
export default class App extends Component {
constructor(props) {
super(props);
this.state = {
shownId: undefined
};
}
toggle(id) {
this.setState({
shownId: id
});
}
render() {
return (
<div>
<label>
<ul>
<button onClick={() => this.toggle(1)}>Toggle 1</button>
<button onClick={() => this.toggle(2)}>Toggle 2</button>
<button onClick={() => this.toggle(3)}>Toggle 3</button>
<h2
style={{ display: this.state.shownId === 1 ? "block" : "none" }}>Toggle record 1 appears Here
</h2>
<h2
style={{ display: this.state.shownId === 2 ? "block" : "none" }}>Toggle record 2 appears Here
</h2>
<h2
style={{ display: this.state.shownId === 3 ? "block" : "none" }}>Toggle record 3 appears Here
</h2>
</ul>
</label>
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById("app"));
推荐阅读
- c# - ChromeDriver 未记录
- django - 初始化 django CheckboxSelectMultiple 并取消选中所有内容?
- c# - 是否可以通过 Messenger 控制发送到我的机器人的附件的大小?
- elasticsearch - ElasticSearch - 字段类型时间范围?
- bash - ssh上的for循环得到未绑定的变量错误
- python - 在 HTML (Flask) 中与 Python 并行迭代多个列表
- asynchronous - WebSphere WorkManager Cluster 双重执行作业
- docker - 一个 ip,多个域 - 重定向到正确的容器
- javascript - 使用 Javascript 取消选中所有其他复选框
- reactjs - React Native DrawerLayout:动画子导致无限递归