这是我参与「第五届青训营」伴学笔记创作活动的第6天。
一、课程重点
- React历史
- React设计思路
- hooks的写法
- React的实现
- React状态管理库
- 应用级框架
二、笔记
UI编程痛点:
- 状态更新UI不会自动更新,需要手动地调用DOM进行更新
- 欠缺基本的代码层面的封装和隔离,代码层面没有组件化
- UI之间的数据依赖关系,需要手动维护,如果依赖链路长,则会遇到回调地狱
转换式系统:给定输入求输出,编译器、数值计算
响应式系统:监听事件,消息驱动,监控系统、UI界面
事件发生 执行回调 状态变更 UI更新
响应式编程
组件化:组件是组件的组合/原子组件;组件内拥有状态,外部不可见;父组件可将状态传入组件内部
状态归属问题:需要共享,状态放到最近的祖宗节点(父可以传给子);局部性
React是单向数据流,只能父传子
组件设计:
1.组件声明了状态和UI的映射
2.组件有Props/State两种状态
3.组件可由其他组件拼装而成
hooks写法
useState()
useEffect()组件挂起时更新一次
不能在循环、条件或嵌套函数中调用hook
React的实现
虚拟DOM
Heuristic Algorithm O(n)
Diff:不同类型的元素,替换;同类型的DOM元素,更新;同类型的组件元素,递归
状态管理库
将状态抽离到UI外部进行统一管理,会降低组件复用性
当前状态,收到外部事件,迁移到下一个状态
判断是否放到状态管理库:状态是agent还是组件拥有的?
例:
依赖于外部model,而不是useState()
应用级框架
React本质是js library
Blitz无API思想
Next.js
总结
学习了一些React的基础知识,有了更深入的理解。