对象式:setState(stateChange,callback)——新状态不依赖于原状态。
函数式:setState((state,props)=>stateChange,callback)——新状态依赖于原状态。
——stateChange:状态改变对象,只包含改变的内容。
——callback:可选的回调函数,在状态更新完毕并且页面也更新完毕(render())后调用,可以用于获取最新的状态数据。
-
setState()更新状态是异步的还是同步的?
1、在react控制的回调函数(生命周期钩子、react事件监听回调)中——异步。
2、非react控制的异步回调函数(定时器回调、promise回调、原生事件监听回调)中——同步。
-
异步setState()的多次调用
对象式setState():状态更新合并(state只更新一次),界面更新合并(只render()一次)。
函数式setState():状态更新不合并,界面更新合并——接收的state和props都保证为最新的。
——如果先setState({}),再setState(fn),状态更新不会合并。
——如果先setState(fn),再setState({}),状态更新会合并。