react纯函数组件useState更新页面不刷新

问题描述:

const [textList, setTextList] = useState(原数组);
setTextList(新数组);


当修改原数组时,如果原数组是个深层数组(不只一层),使用setTextList修改时,不会触发页面刷新

原因分析:

这个涉及到可变对象he不可变对象的知识,在vue和react中,如果更新可变对象时,可能会引起视图更新,这是因为,vue和react默认都是浅监听,只会监听数据的第一层,内层数据发生改变,并不会监听到。

解决方案:

这里我的解决方案是,先将原数组深拷贝,赋值给新数组,再修改新数组,将修改后的新数组传递进去,这样就会引起视图更新。

var lists = textList.concat();
lists.splice(index, 1);
setTextList(lists);
 

你可能感兴趣的:(react.js,javascript,前端)