关于react中的state整理

本文探讨了React中状态管理的关键点,包括为何不能直接更新state,setState方法的执行流程,其同步与异步性质的原因,以及在异步场景下如何处理多次setState调用。总结了setState的批量更新优化策略,强调了这一机制对于性能优化的重要性。
摘要由CSDN通过智能技术生成

react怎么检测到数据的变化?

react状态变化只能通过setState(),调用setState()就会更新状态重新渲染dom


为什么不直接更新state?

  1. 如果试图直接更新state,则不会重新渲染组件
  2. 需要使用setState()方法去更新state,它调度对组件state对象的更新,组件通过重新渲染来响应

react中,在执行setState()方法后发生了什么?

咱们可以将“render”分为两个步骤:

  1. 虚拟DOM渲染:

当render方法被调用时,它会返回一个新的组件的虚拟DOM结构。当调用setState()时,render会被再次调用因为默认情况下shouldComponentUpdate总会返回true,所以默认情况下react是没有优化的。

     2.  原生DOM渲染:

react只会在虚拟DOM中修改真实DOM节点,而且修改的次数非常少,优化了真实DOM的变化,使得react变得更快。


setState()是同步的还是异步的?

看setState具体的执行位置:

  1. 在react控制的回调函数中【异步】:生命周期钩子/react事件回调
  2. 非react控制的异步回调函数中【同步】:定时器回调/原生事件监听回调/promise回调

setState的“异步”并不是说内部由异步代码实现&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值