react
- JSX语法
- 状态
- 属性
- ref
- 组件
- 生命周期
- Hooks
react-router-dom
redux
- redux
- react-redux
- 中间件
- 基本概念
- 单项数据流
- react-redux
- 异步 action
- 中间件
基本概念
不可变值 纯函数
store state action reducer
单项数据流
首先是 dispatch(action),然后是 reducer 产生一个新的 newState,subscribe 出发通知。
dav
组件框架
- umi
SSR服务器渲染 next.js
setState
- 不可变值
- 可能是异步更新
- 可能会被合并
不可变值
不要直接修改 state,要使用一个全新的值。
可能是异步更新
问:什么时候是异步? 答:刚设置完 state,立马获取值,拿不到最新的值,这是异步的。想要拿到最新值,需要使用第二个参数。
问:什么时候是同步? 答:在定时器中使用是同步。还有自定义的DOM事件也是同步的。
总结:如果是由React引发的事件处理,调用setState会异步更新this.state,除此之外的setState调用会同步执行this.state 。
可能会被合并
问:什么时候会合并? 答:异步更新,传入对象,更新前会被合并,只执行一次。类使用Object.assign。
问:什么时候不会合并? 答:setState 传入函数,不会被合并。
batchUpdata 机制
如果命中batchUpdata机制,会使用异步更新,否者同步更新。
isBatchingUdate 默认是true,处于机制中。
setState 本身无所谓同步还是异步,取决于能否命中 batchUpdata 机制,依据是判断 isBatchingUdate。
问:能命中机制的有哪些? 答:生命周期,React中注册的事件,所有React能管理的入口。
不能命中的有:定时器,自定义的DOM事件,React不能管理的入口。
事务机制
先定义一个开始逻辑,然后执行其它任务操作,再执行一个结束逻辑。