Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在reactjs中设置特定参数的特定值_Javascript_Reactjs_Frontend - Fatal编程技术网

Javascript 如何在reactjs中设置特定参数的特定值

Javascript 如何在reactjs中设置特定参数的特定值,javascript,reactjs,frontend,Javascript,Reactjs,Frontend,如何在不设置整个数组/对象的情况下更改状态中对象或数组的特定值 差不多 this.state = { array: [1, 2, 3], objects: [{ id: 1 }, { id: 2 }, { id: 3 }] } 可以使用helper函数在索引处设置元素并返回新更新的数组 const数组=[1,2,3] const object=[{id:1},{id:2},{id:3}] 常量setElementAtIndex=(索引、值、数组)=>[ …数组.slice(0,索引)

如何在不设置整个数组/对象的情况下更改状态中对象或数组的特定值

差不多

this.state = {
  array: [1, 2, 3],
  objects: [{ id: 1 }, { id: 2 }, { id: 3 }]
}

可以使用helper函数在索引处设置元素并返回新更新的数组

const数组=[1,2,3]
const object=[{id:1},{id:2},{id:3}]
常量setElementAtIndex=(索引、值、数组)=>[
…数组.slice(0,索引),
价值
…数组.slice(索引+1)
]
log(setElementAtIndex(0,99,数组))
console.log(setElementAtIndex(1,99,数组))
console.log(setElementAtIndex(2,99,数组))
log(setElementAtIndex(0,{…对象[0],id:0},对象))
我会使用

const state={
数组:[1,2,3],
对象:[{id:1},{id:2},{id:3}]
}
const newArray=state.array.map((v,i)=>i==2?5:v);
const newObjects=state.objects.map((v,i)=>i==0?{…v,id:0}:v);
log(newArray);
console.log(newObjects);
//this.setState({…this.state,array:newArray});

//this.setState({…this.state,objects:newObjects})我最初想到了这一点,但我试图找到一种更有效的方法。我试图找到一个内置的方法(如果存在的话)。除了复制整个Objectmo,还有什么更好的方法吗?在使用数组和对象时,我们应该返回更新后的副本(至少是浅副本)以避免变异有一些选择,但重要的是要理解这不是一项愚蠢的义务,而是在ReactJs中按目的执行的,将此对象标记为已更改的对象以进行新渲染。请尝试理解您的意图。你听起来像是故意改变了对象/数组?@Isaac我是想复制整个对象/数组。感谢社区,现在我知道我的错误了。@blueedge:没问题,我们每天都会学到新东西:)你看到了吗?
this.setState({ array[2]: 5 })
this.setState({ object[0].id: 0 })