stete异步更新遇到的问题

117 阅读1分钟

错误写法

 if(this.refs.Dmsg){
     this.setState(()=>({tableData:selectedRows}))
     this.refs.Dmsg.setFieldsValue(this.state.tableData[0])
       } 

正确写法

  if(this.refs.Dmsg){
       this.setState({tableData:selectedRows},()=>{
       this.refs.Dmsg.setFieldsValue(this.state.tableData[0])
     })
                                

由于setState是异步操作,错误写法中,state是异步同步一块执行,这样异步执行获取不到数据就执行,会出现空白页面;先赋值,在setState后再回调,可以先获取到数据在render,就不会出现空数据问题