antd design table数据修改/删除不更新问题

7,784 阅读1分钟
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://blog.csdn.net/qq_28060549/article/details/88051741)