关于setState

因为react的setState是个异步方法,所以有些时候可能会导致ui响应不及时或者不能通过state来准确的上传数据。
这里可能需要把setState转变成同步方法

回调

官方文档上面描述

1
setState(updater, [callback])

其第二个参数是回调函数,可以通过回调来调用函数。
并且第一个参数也可以数函数形式,这个函数会返回“预修改”后的值。

1
2
3
this.setState((prevState, props) => {
return {counter: prevState.counter + props.step};
});

async await

首先写个方法来封装setStatePromise

1
2
3
4
5
6
7
8
function promiseSetState (state){
var _this=this;
return new Promise((resolve,reject)=>{
_this.setState(state,()=>{
resolve();
});
});
}

之后用async函数调用

async function(){
    await promiseSetState({value:null});
}