对于下面的代码,我想点击onClick事件并将aria-checked
值从false
更改为true
,同时点击第1项到第2到第3项,前一个当你点击下一个时变得虚假。最好的方法是什么?
render() {
return (
<div>
<div aria-checked={this.state.checked}>item 1</div>
<div aria-checked={this.state.checked}>item 2</div>
<div aria-checked={this.state.checked}>item 3</div>
</div>
)
}
在constructor
我初始化状态为this.state = ({ checked: false })
答案 0 :(得分:0)
您使用相同的值this.state.checked
作为所有项目的道具,因此如果值为true
,则当然会检查所有项目。您需要存储的是当前检查项目的索引。
这将是:
changeCheckedIndex = i => {
this.setState({ checkedIndex: i });
}
render() {
return (
<div>
<div onClick={() => this.changeCheckedIndex(0)} aria-checked={this.state.checkedIndex === 0}>item 1</div>
<div onClick={() => this.changeCheckedIndex(1)} aria-checked={this.state.checkedIndex === 1}>item 2</div>
<div onClick={() => this.changeCheckedIndex(2)} aria-checked={this.state.checkedIndex === 2}>item 3</div>
</div>
)
}