响应式系统与React | 青训营笔记

99 阅读2分钟

这是我参与第四届青训营笔记创作的第1天

响应式系统与React

01.React历史与应用

02.React的设计思路

React的设计思路——UI编程痛点

01.状态更新,UI不会自动更新,需要手动地调用DOM进行更新。
02.欠缺基本的代码层面的封装和隔离,代码层面没有组件化。
03.UI之间的数据依赖关系,需要手动维护,如果依赖链路长,则会遇到“Callback Hell”。

React的设计思路——响应式与转换式

转换式系统≠响应式系统
响应式系统:

image.png

React的设计思路——响应式编程

前端UI:

image.png

01.状态更新,UI自动更新。
02.前端代码组件化,可复用,可封装。
03.状态之间的互相依赖关系,只需声明即可。

React的设计与实现——组件化

1.组件是组件的组合/原子组件
2.组件内拥有状态,外部不可见
3.父组件可将状态传入组件内部

React的设计思路——组件化

组件设计:
1.组件声明了状态和UI的映射。
2.组件有Props/State两种状态。
3.“组件”可由其他组件拼装而成。

03.React(hooks)的写法

04.React的实现

01.JSX不符合JS标准语法
02.返回的JSX发生改变时,如何更新DOM
03.State/Props更新时,要重新触发render函数

React的实现——Problem2

Virtual DOM(虚拟DOM)

Virtual DOM是一种用于和真实DOM同步,而在JS内存中维护的一个对象,它具有和DOM类似的树状结构,并和DOM可以建立一一对应的关系。

React的实现——How to Diff?

image.png

完美的最小Diff算法,需要O(n^3)的复杂度
牺牲理论最小Diff,换取时间,得到了O(n)复杂度的算法:Heuristic O(n)Algorithm

05.React状态管理库

06.应用级框架科普