我有一个名为item的状态对象。
items: [
{
name: 'John'
id: '1',
checked: false,
},
{
name: 'Dude'
id: '2',
checked: true,
}
]
在UI上,单击“我需要将ID = 1的项目的选中属性更新为true” 如何将setState用于项目以更新项目中的一个(单个)项目
答案 0 :(得分:2)
像这样?注释中的解释:
onClick(id) {
// Create a temporary copy of your items array
const itemsCopy = this.state.items.slice();
// Find the index of the items where the item has the id you want
const idx= itemsCopy.findIndex(x => x.id === id);
// Re-assign the item to have the same values as before (name and id), but change the checked to true
itemsCopy[idx] = {...itemsCopy[idx], checked: true};
// Update the state with our modified copy
this.setState({items: itemsCopy});
}
答案 1 :(得分:1)
const {items} = this.state;
const index = items.findIndex(val=>val.id ===1);
items[index].checked = true;
this.setState({items});
答案 2 :(得分:1)
处于状态的“ items”对象应更新。因此slice可用于复制数组。 并且将其设置回状态应该足够了,以便组件可以了解状态已更改。
let items = this.state.items.slice();
const index = items.findIndex(val => val.id === 1);
items[index].checked = true;
this.setState({ items });