React的设计和实现
本篇笔记的目的:站在更高的角度看待React
React的设计思路
解决UI编程的痛点
状态更新,UI不会自动更新,需要手动调dom api进行更新
- 欠缺基本代码的封装和隔离,代码层面没有组件化
- UI之间数据依赖,需要手动维护,如果依赖链路过长,会有 callback hell的问题
响应式编程
期望能
1. 状态更新,UI自动更新 2. 前端代码组件化,可复用,可封装 3. 状态之间的依赖关系,只需要声明即可
组件化
1. 组件是组件的组合/原子组件 2. 组件内拥有状态,外部不可见 3. 父组件可将状态传入组件内部
状态归属问题
1. react是单向数据流,只能父组件将状态传递给子组件(但可以将改变父组件状态的方法传递给子组件实现父子组件通信) 2. 如何解决不合理的状态上升问题? 3. 组件状态改变后,如何更新dom
React的实现
- DIff算法

React解决状态管理问题
先说结论:使用状态管理库
状态管理库核心思想:将状态抽离到ui外部进行统一管理。
将状态抽离到ui外部的问题:降低了组件复用性,组件跟外部状态强耦合
何时使用状态管理库?
判断一个状态是不是只属于组件本身,如若是则不需要状态管理库