这是我参与[第五届青训营]伴学笔记创作活动的第4天。 本堂课的重点知识点主要在于认识与了解React这一门语言的设置思路、写法与其如何实现。 React(以FaxJS为原型) React的设计思路 - UI编程痛点 1.状态更新,UI不会自动更新,需要手动的调用DOM进行更新。 2.欠缺基本的代码层面的封装和隔离,代码层面没有组件化。 3.UI之间的数据依赖关系,需要手动维护,如果依赖链路过程,则会遇到Callback Hell。
React的设计思路 - 响应式与转换式 给定输入求解输出 《转换式系统》 编译器 数值计算 【不等于】 监听事件,消息驱动。《响应式系统》监控系统 UI界面 响应式系统:事件→执行既定回调→状态变更 前端UI:事件→执行既定回调→状态变更→UI更新
React的设计与实现 - 响应式编程 1.状态更新,UI自动更新 2.前端代码组件化,可复用,可封装 3.状态之间的互相依赖关系,只需声明即可
React的设计与实现 - 组件化 1.组件是组件的组合/原子组件 2.组件内拥有状态 3.父组件可将状态传入组件内部
组件设计 1.组件声明了状态和UI的映射 2.组件有Props/State两种状态 3.“组件”可由其他组件拼装而成
1.组件内部拥有私有状态State 2.组件接受外部的Props状态提供复用性 3.根据当前的State/Props,返回一个UI
React(hooks)的写法 虚拟DOM是一种用于和真实DOM同步,而在JS内存中维护的一个对象,它具有和DOM类似的树状结构,并和DOM可以建立一一对应关系。 它赋予了React声明式的API。
完美的最小DIFF算法,需要O(n^3)的复杂度。 牺牲理论最小DIFF,换取时间,得到了O(n)复杂度的算法Heuristic O(n)Algorithm
怎么DIFF 不同类型的元素 替换 同类型的DOM元素 更新 同类型的组件元素 递归
父组件状态改变后,他的嵌套的子节点或者子子节点都会出问题。
React状态管理库 - 核心思想: 将状态抽离到UI外部进行统一管理
React状态管理库推荐:redux、xstate、mobx、recoil 状态机:当前状态,收到外部事件,迁移到下一个状态。