javascript - 这是改变 react 状态的可接受方法吗?

标签 javascript reactjs

试图更改嵌套对象的属性之一。我不确定,因为我知道arrayCopy是浅拷贝,因此不会复制处于该状态的原始数组内的对象。但是,当我更改应该保留对原始元素的引用的update元素时,这是否与更改状态相同?

let arrayCopy = [...state.array]; // [ {},{}...] copy some array of nested objects 
let updatedElement = arrayCopy[index]; // take some particular element 
updatedElement.flag = true; // change one of its properties 
return {...state, array: arrayCopy} // This is inside a reducer

最佳答案

几乎,但是您需要像其他元素一样复制要更新的对象(将flag设置为开),因此无法就地更新它:

let arrayCopy = [...state.array]; // [ {},{}...] copy some array of nested objects 
let updatedElement = arrayCopy[index] = {...arrayCopy[index]}; // copy the element we're updating
// −−−−−−−−−−−−−−−−−−^^^^^^^^^^^^^^^^^^^^^^^−−−−−−−−−−−−−−−−^
updatedElement.flag = true; // change one of its properties 
return {...state, array: arrayCopy} // This is inside a reducer

关于javascript - 这是改变 react 状态的可接受方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61538191/

相关文章:

javascript - 如何在react中实现平滑的响应式视差效果?

javascript - 结束后自动切换到下一首歌曲

css - JSX 中内联样式的正确方法

reactjs - React 性能问题渲染数千个组件

javascript - 无法多次模拟函数 react 、测试

javascript - 如何使用 useRef 和 react Hook 在 ReactJS 中设置对自定义输入的关注?

javascript - 将 .append() 与 click() 一起使用

javascript - 在 Plotly 中取消绑定(bind)点击事件

javascript - 如何在ReactJS中获取下拉菜单的值

javascript - 使用带有 inject = true 的 HtmlWebpackPlugin 不会缩小 ES6 代码