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

75 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第4天

一、React的应用

引用场景

  • 前端页面开发
  • 移动端原生应用开发
  • 结合Electron,进行桌面开发等

二、React的设计思路

UI编程的痛点

  • 状态跟新,UI不会自动更新,需要手动的吊桶DOM进行更新
  • 欠缺基本的代码层面的疯转和隔离,代码层面没有组件化
  • UI之间的数据依赖关系,需要手动维护,如果依赖链路长,则会遇到“Callback Hell”

响应式与转换式

转换式系统

  • 应用:

    • 编译器
    • 数值计算
  • 描述:给定输入求解输出

响应式系统

  • 应用:

    • 监控系统
    • UI界面
  • 描述:监听事件,消息驱动

响应式编程

前端UI

  1. 事件
  2. 执行既定的回调
  3. 状态变更
  4. UI更新

目标:

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

组件化

总结:

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

组件设计:

  1. 组件声明了转台和UI的映射
  2. 组件有Props/State两种状态
  3. “组件”可有其他组件拼装而成

三、React(hooks)

注意事项:

  1. 不要在循环、条件或嵌套函数中调用Hook

四、React的实现

问题

  1. JSX不符合JS标准语法

    通过转换,利用HTML的树形结构,可以将标签根据名称,属性等拆分为对象的形式,然后转换为所期望的格式

  2. 返回的JSX发生改变时如何更新DOM

    利用虚拟DOM

  3. State/Props更新时,要重新 触发render函数

五、React状态管理库

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

相关:

  • redux
  • xstate
  • mobx
  • recoil

状态机:当前状态收到外部事件,迁移到下一个状态

六、应用级框架科普

  1. NEXT.js

    硅谷明星创业公司Vercel的React开发框架,稳定,开发体验好,支持Unbundled Dev、SWC等,其同样有Serverledd 一件部署平台帮助开发者传递完成部署。口号时“Ley's Make Web Faster"

  2. MODERN.js

    字节跳动Web infra团队研发的全站开发框架,内置了很多开箱即用的能力与最佳实践。可以减少调研选择工具时间

  3. Blitz

    无API思想的全栈开发框架内,开发国政中无需写API调用CRUD逻辑,适合前后但紧密联系的小团队项目