






















2 nazalewoyuanyiOP @dcsuibian 你的这个问题和我的这个问题,其实是一个问题,react 内部有一个优化机制,叫做 bailout ,就是停止重新渲染。 当调用 setState 时,会走类似于:调度 -> 组件重渲染 -> 提交到 DOM 的流程。在「调度」这个阶段,react 有一个优化机制,会对比你要 set 的 state 值和当前的 state 值,是否一样,如果一样,直接 bailout ,后续流程都不走了,组件也不会重新渲染。 但是「调度」这个阶段的这个优化机制,触发的时机特别“缺心眼”,反正我是没看明白。 所以你的那个问题的原因就是,触发了「调度」阶段的 bailout 优化机制,这个机制会读取 setState 的值,如果你 set 的是一个函数,那么他会调用这个函数得到要 set 的值,所以你的那个 setState 的函数才立即被调用。 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。