响应式系统与React | 青训营笔记
这是我参与第四届青训营笔记创作活动的第2天。
昨天上课讲了响应式系统与React,今天早上复习了PPT、查阅了资料,对React做一个小小的总结。
React 是一个用于构建用户界面的 JavaScript 库。特点有:
- 1.声明式设计 −React采用声明范式,可以轻松描述应用。
- 2.高效 −React通过对DOM的模拟,最大限度地减少与DOM的交互。
- 3.灵活 −React可以与已知的库或框架很好地配合。
- 4.JSX − JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但我们建议使用它。
- 5.组件 − 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。
- 6.单向响应的数据流 − React 实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。
(React 教程 | 菜鸟教程 (runoob.com))
React的设计思路
- 组件化
- 响应式编程:事件->执行既定的回调->状态变更->UI更新
React(hooks)的写法
React提供Hooks机制,通过Hooks可以创建出带有状态的函数组件。
Hooks有几项规则:
- 以use前缀开头
- 只能在React函数组件的顶层使用
- 不能根据条件使用
常用的Hooks
-
useState 通过外部传递的数据被称作props,组建自身数据被称作state。 使用useState可以创建state。 用法:
const [stateValue, setStateValue]=useState(initialValue) -
useEffect 当需要和组建外部的东西交互时,需要使用useEffect。 useEffect执行副作用。
React的实现
明式编程和指令式编程
Diff
React 中最值得称道的部分莫过于 Virtual DOM 与 diff 的完美结合,特别是其高效的 diff 算法,让用户可以无需顾忌性能问题而”任性自由”的刷新页面,让开发者也可以无需关心 Virtual DOM 背后的运作原理,因为 React diff 会帮助我们计算出 Virtual DOM 中真正变化的部分,并只针对该部分进行实际 DOM 操作,而非重新渲染整个页面,从而保证了每次操作更新后页面的高效渲染,因此 Virtual DOM 与 diff 是保证 React 性能口碑的幕后推手。
(React 源码剖析系列 - 不可思议的 react diff - 知乎 (zhihu.com))
| 类型 | 方法 |
|---|---|
| 不同类型的元素 | 替换 |
| 同类型的DOM元素 | 更新 |
| 同类型的组件元素 | 递归 |
React状态管理库
- redux
- xstate
- mobx
- recoil