react怎么检测到数据的变化?
react状态变化只能通过setState(),调用setState()就会更新状态重新渲染dom
为什么不直接更新state?
- 如果试图直接更新state,则不会重新渲染组件
- 需要使用setState()方法去更新state,它调度对组件state对象的更新,组件通过重新渲染来响应
react中,在执行setState()方法后发生了什么?
咱们可以将“render”分为两个步骤:
- 虚拟DOM渲染:
当render方法被调用时,它会返回一个新的组件的虚拟DOM结构。当调用setState()时,render会被再次调用因为默认情况下shouldComponentUpdate总会返回true,所以默认情况下react是没有优化的。
2. 原生DOM渲染:
react只会在虚拟DOM中修改真实DOM节点,而且修改的次数非常少,优化了真实DOM的变化,使得react变得更快。
setState()是同步的还是异步的?
看setState具体的执行位置:
- 在react控制的回调函数中【异步】:生命周期钩子/react事件回调
- 非react控制的异步回调函数中【同步】:定时器回调/原生事件监听回调/promise回调
setState的“异步”并不是说内部由异步代码实现&