useReducer执行时间

关于useReducer中reducer执行的时间

我以前理解的触发时机是这样:

1、某个button被用户点击,它的onClick被调用,其中执行了dispatch({type:'add'}),React框架安排一次更新
2、React框架处理刚才安排的更新,调用reducer(prevState, {type:'add'}),得到新的状态 (注意此时还没有发生重新渲染)
3、React框架用新的状态来重新渲染组件树,执行到Counter组件的useReducer时,返回上一步得到的新状态即可

但是实际上,React会在下次渲染的时候,会同步地调用reducer来处理队列中的action:

1、某个button被用户点击,它的onClick被调用,其中执行了dispatch({type:'add'}),React框架安排一次更新
2、React框架处理刚才安排的更新,开始重渲染组件树 (注意此时还不知道最新的reducer状态)
3、React框架重新渲染组件树,执行到Counter组件的useReducer时,调用reducer(prevState, {type:'add'}) ,得到新的状态

重要的区别在于,reducer是在重新渲染的时候被调用的,它的闭包捕获到了下次渲染的闭包(包括props以及前面的hooks结果)。
事实上,通过例子,会发现reducer会在新渲染执行useReducer的时候被同步执行的

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容