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

74 阅读2分钟
  • 这是我参与第五届青训营伴学笔记创作活动的第7天

React历史与应用

  • 2010年 Facebook在php生态中,引入xph框架,引入组合式组件 启发的React
  • 2011 FaxJS React原型

image.png

  • 2012 Facebook收购Instagram后,FaxJS在项目内部使用,基于FaxJS创造了React
  • 2013 React正式开源
  • 2014-今天 React各种生态和工具大爆发

image.png


React设计思路

痛点

  1. 状态更新,UI不会自动更新,需手动更新
  2. 卡按却封装隔离 未组件化
  3. UI长链路相互依赖,遇到 “Callback Hell”

解决思路

  1. UI跟随状态更新
  2. 代码组件化 可复用 可封装
    • 原子组件
    • 组件内状态 外部不可见
    • 父组件可将状态传入组件内部
  3. 状态之间依赖 只需声明

状态归属问题

  1. React 单向数据流?双向数据流?
    • 单向 只能父组件传子组件
  2. 状态不合理上升?
    • 见状态管理
  3. 组件状态改变,更新DOM?
    • 见React实现章节

组件化

  1. 组件声明状态和UI映射
  2. 组件有Props(外部提供复用性) / State(内部状态) 两种状态
  3. 组件可以由组件拼装

React(hooks)的写法

hooks简要介绍

image.png

image.png


React的实现

Problems & Answer

  1. JSX不符合JS标准语法
    • 直接Transpare 转义就可以
  2. 返回JSX发生改变时,如何更新DOM
    • 根据diff算法只更新需要更新的部分 Virtual DOM虚拟DOM
      • 一种用于和真实DOM同步 而在JS内存中维护的一个对象,它具有和DOM类似的树状结构,和DOM直接建立一一对应关系
      • 赋予了React声明式API

image.png image.png 5. State/Props更新时,要重新触发render(组件函数本身)函数

如何更新

image.png

生命周期

image.png

React状态管理库

  • 将状态抽离到UI外部进行统一管理
    • 会降低组件的复用性,组件和Store强关联,Store只会出现在业务中
  • 常用React状态管理库 image.png

应用级框架科普

image.png