【发布时间】:2019-06-13 11:01:10
【问题描述】:
我有在同一页面中多次使用的组件,并且每次显示它时都会为其设置新状态。州名来自 DB,所以我不知道州名。我想知道是否有办法将所有现有状态设置为 false。在每个组件中都有复选框。在我的页面中,一次应该只选择一个复选框。通过将所有状态更改为 false 我可以在单击其他复选框时取消选中所有复选框。
onSelect = (e) => {
this.setState({
// allStates: false, <------------- Something like that
[e.target.getAttribute('data-id')]: !this.state[e.target.getAttribute('data-id')]
});
}
render() {
return (
<div>
<SearchResult data-id="a" pName="Duracell 1" onClick={this.onSelect} selected={this.state.a} />
<SearchResult data-id="b" pName="Duracell 2" onClick={this.onSelect} selected={this.state.b} />
<SearchResult data-id="c" pName="Duracell 3" onClick={this.onSelect} selected={this.state.c} />
</div>
)
}
所以在将状态设置为 true 之前,我需要以某种方式将所有其他状态设置为 false。
【问题讨论】:
-
你可能想看看redux:redux.js.org
-
我相信必须有更简单的方法来做到这一点,然后使用 Redux。我的意思是更少的代码 + 我不需要使这些状态成为全球性的,它们保持在 1 个组件内。无论如何谢谢:)
-
你为什么不用
<input type="radio" ... />? -
是的,没错,也许我可以使用 map() 函数和输入类型=radio。我想我只是忘记了这个选项。我只是非常喜欢尝试使用 React 的可能性来更快地适应它。如果当前选项不起作用,那么将执行此操作。谢谢