如何用ES6一行代码实现React中数组单个元素的状态修改
回答
完全可以,而且改写后的写法还能修复你原有代码的隐患:
你原写法里const newArray = upfiles是直接赋值数组引用,后续修改newArray[i]等价于直接修改原状态数组upfiles,违反了React状态不可变的原则,可能引发意料之外的渲染问题。
改用数组map方法的一行ES6实现如下:
setUpfiles(upfiles.map((item, idx) => idx === i ? { ...item, status: 'Ready' } : item))
原理是遍历原数组,下标匹配的位置返回修改后的新对象,其余位置原样返回,最终map会生成一个全新的数组传给状态更新函数,全程不会修改原状态,符合React的最佳实践。
内容的提问来源于stack exchange,提问作者Ofer Gal
相关产品推荐
相关产品推荐

