React中如何使用useState修改数组的第一个元素?
实现方法
React 中更新 state 数组需要遵循不可变原则,不能直接修改原数组的元素,必须传入全新的数组给 state 更新函数,要实现把数组第一个元素改为3、最终得到[3, 0]的效果,有两种常用正确写法:
- 写法1:展开运算符+slice(适合当前固定修改第一个元素的场景,写法最简洁)
// 拼接新的第一个元素,截取原数组索引1及之后的元素保留 setMyArray([3, ...myArray.slice(1)])
- 写法2:map遍历(通用写法,适合任意索引位置的元素修改,扩展性更好)
// 遍历数组,匹配到索引为0的第一个元素时替换为3,其余元素保留原值 setMyArray(myArray.map((item, index) => index === 0 ? 3 : item))
注意:不要直接写
myArray[0] = 3后再调用setMyArray,这种写法直接修改了原state的引用,React无法检测到state变更,不会触发组件重渲染,属于错误用法。
内容的提问来源于stack exchange,提问作者user19228105
相关产品推荐
相关产品推荐

