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

158 阅读2分钟

响应式系统与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的设计思路

  1. 组件化
  2. 响应式编程:事件->执行既定的回调->状态变更->UI更新

React(hooks)的写法

React提供Hooks机制,通过Hooks可以创建出带有状态的函数组件。

Hooks有几项规则:

  1. 以use前缀开头
  2. 只能在React函数组件的顶层使用
  3. 不能根据条件使用

常用的Hooks

  1. useState 通过外部传递的数据被称作props,组建自身数据被称作state。 使用useState可以创建state。 用法:

    const [stateValue, setStateValue]=useState(initialValue)

  2. 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状态管理库

  1. redux
  2. xstate
  3. mobx
  4. recoil