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

39 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

响应式系统与React

React的历史与应用

Facebook开发了React并开源

React的设计思路

UI编程痛点

  1. 状态更新,UI不会自动更新,需要自己手动地调用DOM更新(操作重复繁琐)。
  2. 欠缺基本的代码层面的封装和隔离,代码层面没有组件化。
  3. UI之间的数据依赖关系,需要手动维护。如果依赖链路长,则会遇到"Callback Hell"(即一个Callback函数需要调用另一个Callback,从而陷入循环)

响应式与转换式

转换式系统:给定输入求解输出

响应式系统:监听事件,消息驱动

响应式编程

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

组件化

  1. 组件内部拥有私有状态State
  2. 组件接受外部的Props状态提供复用性
  3. 根据当前的State/Props,返回一个UI

总结

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

React(hooks)的写法

Hook 是一些可以让你在函数组件里“钩入” React state 及生命周期等特性的函数

import React, { useState } from 'react';

function Example() {
  // 声明一个新的叫做 “count” 的 state 变量
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}

React的实现

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

Virtual DOM(虚拟DOM)

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

React状态管理库

核心思想:将状态抽离到UI外部进行统一管理

  • redux
  • xstate
  • mobx
  • recoil

应用级框架科普

  1. NEXT.JS
  2. MODERN.JS
  3. Blitz