react

  • JSX语法
  • 状态
  • 属性
  • ref
  • 组件
  • 生命周期
  • Hooks

react-router-dom

redux

  • redux
  • react-redux
  • 中间件
  1. 基本概念
  2. 单项数据流
  3. react-redux
  4. 异步 action
  5. 中间件

基本概念

不可变值 纯函数

store state action reducer

单项数据流

首先是 dispatch(action),然后是 reducer 产生一个新的 newState,subscribe 出发通知。

dav

组件框架

  • umi

SSR服务器渲染 next.js

setState

  1. 不可变值
  2. 可能是异步更新
  3. 可能会被合并

不可变值

不要直接修改 state,要使用一个全新的值。

可能是异步更新

问:什么时候是异步? 答:刚设置完 state,立马获取值,拿不到最新的值,这是异步的。想要拿到最新值,需要使用第二个参数。

问:什么时候是同步? 答:在定时器中使用是同步。还有自定义的DOM事件也是同步的。

总结:如果是由React引发的事件处理,调用setState会异步更新this.state,除此之外的setState调用会同步执行this.state 。

可能会被合并

问:什么时候会合并? 答:异步更新,传入对象,更新前会被合并,只执行一次。类使用Object.assign。

问:什么时候不会合并? 答:setState 传入函数,不会被合并。

batchUpdata 机制

如果命中batchUpdata机制,会使用异步更新,否者同步更新。

isBatchingUdate 默认是true,处于机制中。

setState 本身无所谓同步还是异步,取决于能否命中 batchUpdata 机制,依据是判断 isBatchingUdate。

问:能命中机制的有哪些? 答:生命周期,React中注册的事件,所有React能管理的入口。

不能命中的有:定时器,自定义的DOM事件,React不能管理的入口。

事务机制

先定义一个开始逻辑,然后执行其它任务操作,再执行一个结束逻辑。

Last Updated: 2022/3/3 17:48:36
Contributors: 黎聪