You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
setState() enqueues changes to the component state and tells React that this component and its children need to be re-rendered with the updated state. This is the primary method you use to update the user interface in response to event handlers and server responses.
setState 更新操作
本质是类似于 Object.assign 的浅合并
使用
setState(stateChange[, callback])
This performs a shallow merge of stateChange into the new state
React 中的 setState 用法
setState 更新操作
本质是类似于
Object.assign
的浅合并使用
setState(stateChange[, callback])
以上代码等价于
所以以上代码只加 1 次
setState((state, props) => stateChange[, callback])
以上代码会加 2 次
同步异步性
同步
绕过 React 通过 addEventListener 直接添加的事件处理函数,还有通过 setTimeout/setInterval 产生的异步调用。
异步
由
React
引发的事件处理,比如说onClick
,都是异步的,即在 使用setState
修改 过后立即访问state
修改的变量仍不是最新值。sandbox demo
测试效果
分析
componentDidMount
生命周期里面,使用对象方式更新,发现count
字段只被加了 1 次,且是异步的;紧接着,后面有个setTimeout
的异步回调,发现count
字段被 同步 加了 2 次;react
事件,在更新state
中使用update callback
方式,异步加了 3 次;react
事件,在更新state
中使用object
方式,异步被加了 1 次count
字段 被同步加了 2 次总结
参考
The text was updated successfully, but these errors were encountered: