1. 由于roleData是list对象,下面方法仅仅是引用:
addData = () => {
let data = this.state.roleData;
data.push({
id: 'a',
dataIndex: 0,
roleName: "",
roleSearch: true,
authority: "",
cameraMagData: [],
alarmData: false,
});
this.setState({
roleData : roleData,
});
}
roleData.push其实就是相当于this.state.dataSource.push,引用没有改变,只是改变了引用指向的内存数据,React认为虚拟DOM并没有改变,因此,不会重新渲染页面。这就会导致Table组件的roleData改变了,但是Table并没有重新渲染。
2.更新代码如下:
addData = () => {
let roleData = [...this.state.roleData];
roleData.push({
id: 'a',
dataIndex: 0,
roleName: "",
roleSearch: true,
authority: "",
cameraMagData: [],
alarmData: false,
});
this.setState({
roleData : roleData,
});
}
重新建一个list对象,这时roleData的引用和this.state.roleData的引用不同,在this.setState方法中,React认为是改变了dataSource,因此会重新渲染页面。
3. 每次重新渲染Table时,Table的columns也会重新渲染。
[参考](https: