Javascript 如何在react中为数组中的特定对象设置状态
我在React应用程序中有我所在州的地图列表。例:Javascript 如何在react中为数组中的特定对象设置状态,javascript,arrays,reactjs,dictionary,state,Javascript,Arrays,Reactjs,Dictionary,State,我在React应用程序中有我所在州的地图列表。例: item : [ { name: 'abc', age: '10' }, { name: 'xyz', age: '2' }, { name: 'sdf', age: '6'} ] 如果我只想更改集合“age”:10作为名称“xjz”,我将如何更新状态 您可以使用地图。例如: const newData = data.map(val => { if(val.id === id) { return {...val, name:
item : [ { name: 'abc', age: '10' }, { name: 'xyz', age: '2' }, { name: 'sdf', age: '6'} ]
如果我只想更改集合“age”:10作为名称“xjz”,我将如何更新状态 您可以使用地图。例如:
const newData = data.map(val => {
if(val.id === id) {
return {...val, name: 'new name'};
}
return val;
}
您必须更新状态中的关联变量:
this.state.values[1].age = 10;
this.setState({
values,
});
您应该创建一个新的数组映射,映射到具有新值的旧数组:
const initial=[
{姓名:'abc',年龄:'10'},
{姓名:'xyz',年龄:'2'},
{姓名:'sdf',年龄:'6'}
]
const updated=initial.map(元素=>
element.name=='xyz'
?{…元素,年龄:10}
:元素
)
console.log(已更新)
/*
[
{
“名称”:“abc”,
“年龄”:“10”
},
{
“名称”:“xyz”,
“年龄”:10岁
},
{
“名称”:“自卫队”,
“年龄”:“6”
}
]
*/
最简单的解决方案是映射您的阵列,并仅替换与您的条件匹配的项目:
this.setState(prev => ({
item: prev.item.map(item => item.name === 'xjz' ? { ...item, age: '10' } : item)
}))
在类函数中:
changeValue = name => {
this.setState(prev => ({
item: prev.item.map(item => item.name === name ? { ...item, age: '10' } : item)
}))
}
changeValue('xyz')
你尝试过的东西可能重复?一种方法是使用需要匹配的条件,然后更新该索引处的对象。另外,您的示例中没有namexjz
。非常感谢。你的解决方案很完美!!!很高兴它有帮助,请随意接受它作为正确答案:)