我认为你对这个问题有更好的解决方案: 我有一个包含我的猫对象数组的文件:
var categories = [
{
"id": 1,
"name" : "Faktury",
"selected" : false
},
{
"id": 2,
"name" : "Telefony",
"selected" : false
},
{
"id": 3,
"name" : "Komputery",
"selected" : false
},
{
"id": 4,
"name" : "Rachunkowośc",
"selected" : false
},
{
"id": 5,
"name" : "Finanse",
"selected" : false
}
];
我有:
<ul className="category">
{this.state.categories.map((item,index) =>
<li onClick={()=>this.filterCategory(item,index)} key={item.id} className={item.selected? 'active' : ''}>{item.name}</li>
)}
</ul>
我的filterCategory函数:
filterCategory(item,index) {
this.state.categories[index].selected = !this.state.categories[index].selected;
this.forceUpdate();
}
你知道我怎么在不使用forceUpdate()的情况下实现它吗?我在Stack上读到应该避免使用this.forceUpdate()。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
不要直接修改状态
使用setState方法进行状态更改。
使用
setState会自动触发重新渲染,所以不要直接修改状态,而是使用setState来更新状态。filterCategory(item,index){ var categories = [...this.state.categories]; categories[index].selected = !categories[index].selected; this.setState({categories}) }根据文档: