这是我参与「第五届青训营」伴学笔记创作活动的第6天
本节课的知识要点
- React的历史和应用
- React的设计思路
- React写法和React实现
- React状态管理库和应用级框架科普
React应用场景
- 前端应用开发
- 移动原生应用开发
- 结合Electron进行桌面应用开发
从零开始推出React设计思路
- UI编程痛点,苹果手机选配来确定价格,如果通过JS需要绑定事件通过callback来进行修改,书写代码并不简单
- 状态更新,UI不会自动更新,需要手动调用DOM来进行更新
- 欠缺基本的代码层面的封装和哥里,代码层面没有组件化
- UI之间数据的依赖关系需要对此进行手动维护,如果链路很长会出现回调地狱
- 响应式与转换式
- 响应式系统与前端UI:事件-》执行既定的回调-》状态变更-》更新UI
- 响应式编程
- 状态更新,UI也自动更新
- 前端代码组件化,复用性和封装性
- 状态之间的依赖关系只需要声明即可
- 组件化总结
- 组件是组件的组合
- 组件内的状态外部不可见
- 父组件可以将状态传递给子组件
React实现 Problems
- JSX不符合JS语法标准
- 返回的JSX发生改变时如何更新DOM
- 通过虚拟DOM来对浏览器的真实DOM修改,保证功能的实现
- State/Props更新时,要重新触发render函数
HOW to Diff
完美的最小Diff算法,需要O(n^3)的复杂度,牺牲理论最小Diff,换取时间,得到O(n)的算法。
React状态管理库
核心思想:将状态抽离到UI外部进行一个统一管理
- redux
- xstate
- mobx
- recoil
状态机
当前状态,收到外部事件,迁移到下一个状态
个人感悟
我之前学习过VUE框架,今天学习React框架之后,发现框架之间是有一些相同之处的,对生命周期还有响应式这块都有部分的收获,很不错的一课