这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
响应式系统与 React
课程内容概要
- React的历史与应用
- React的设计思路
- React的写法与实现
- React状态管理库
一、React的历史与应用
(一)React的历史
1.2010-2012
2.2013年React正式开源,在2013JSCconf上Jordan Walke介绍了这款框架。
3.2014-今天
(二)React的应用
二、React的设计思路
(一)、UI编程痛点
1.状态更新,UI不会自动更新,需要手动调用DOM进行更新。 2.欠缺基本的代码层面的封装隔离,代码层面没有组件化。 3.UI之间的数据依赖需要手动维护,如果链路过长会遇到“Callback Hell”。
(二)、响应式与转换式
在原有前端UI的状态变更后面增加 状态变更 UI同时变更完成响应式变更
1.响应式编程.
状态更新,UI自动更新 (“状态更新,UI不会自动更新,需要手动低啊用DOM进行更新”)
前端代码组件化,可复用,可封装. (“欠缺基本的代码层面的封装和隔离,代码层面没有组件化”)
状态之间的互相依赖关系,只需声明即可。
(“UI之间的数据依赖关系,需要手动维护,如果依赖链路长会遇到“Callback Hell””)
(2).状态归属问题
例如苹果官网订购页面“当前价格属于Root节点”
OnChangValue向下传递
状态归属于两个节点中最原始的节点
React是单向数据流。
(三)、组件化
组件代码会是什么样子?
组件设计:
- 组件声明了状态和UI的映射.
- 组件有Props/State两种状态
- “组件”可由其他组件拼装而成
三、React的写法与实现
(Hooks)
(一)、Hooks写法新手入门
useState
传入一个初始值,返回一个状态和set该状态的函数,用户可以用哪个过调用该函数来实现状态的修改。
useEffect
传入一个函数,和一个数组,数组是状态的数组称作依赖项,该函数在mount是和依赖项被set的时候会执行。 (有°副作用“的函数,要传入 useEffect 来执行。副作用代表除了单纯的计算之外,还要做其它的一些事情,比如网络请求,更新 DOM, localStorage 存储数据等。)
Hook 使用法则
1.不要在循环,条件或嵌套函数中调用 Hook。
(二)、React的实现
Problem1.
1.JSX不符合JS标准语法 2.返回的JSX发生改变时,如何更新DOM 3.State/Props更新时,要重新触发Render函数
Problem2.
Virtual DOM (虚拟 DOM)
Virtual DOM 是一种用于和真实 DOM 同步,而在JS 内存中 维护的一个对象,它具有和 DOM 类似的树状结构,并和
DOM 可以建立--对应的关系。
它赋予了 React 声明式的 AP1:您告诉 React 希望让UI 是什么状态,React 就确保 DOM 匹配该状态。这使您可以从属性操作、事件处理和手动DOM 更新这些在构建应用程序时必要的操作中解放出来。
Problem3. How to diff?
四、React状态管理库
核心思想:将状态抽离带UI外部进行统一管理
当前状态,收到外部事件,迁移到下一个状态