React中重渲染何时触发?函数执行中还是完成后?
React 重渲染的触发时机
重渲染会在someFunction执行完成后触发,而非第1行修改state之后立刻触发。
React对同步执行上下文里的state更新会做批量处理:在当前函数执行过程中,不管你修改多少次state,React都不会立刻启动重渲染流程,而是先把这些state更新暂存起来,等当前函数执行完毕、当前事件循环的同步任务全部完成后,再统一计算state的最终变化,然后触发一次组件重渲染。
对应你给出的伪代码场景:第1行修改了state x,但此时React不会马上触发重渲染,而是继续执行函数里从第2行到第149行的所有代码,等整个someFunction执行完成后,才会触发组件的重渲染。
额外补充:如果是在异步操作(比如setTimeout、Promise回调)里修改state,这类场景下React不会做批量处理,每次state修改后会立刻触发重渲染,但同步函数内的state更新都遵循上述批量处理、函数执行完再重渲染的规则。
内容的提问来源于stack exchange,提问作者Peter_19
相关产品推荐
相关产品推荐

