页面通过render渲染,通过setState改变数据但是页面并未改变。
const obj = this.state.obj;
obj.forEach((e) =>{
改变了对象的值
});
this.setState({
obj
});
此时页面并未改变
解决方法:浅拷贝方式获取对象并修改再赋值。
const obj = [...this.state.obj];
原因: 对象数组是引用方式 ,对于react来说它的值都是地址(涉及到tree diff),因为没有被重新赋值(地址没有改变),所以 react 会认为仍然是之前的元素(element),则不更新视图。