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

82 阅读2分钟

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

React

React的历史与应用

2013年React正式开源,JSConf上 Jordan Walke介绍了这款全新的框架。从2014年到现在,各种围绕React的新工具/新框架开始涌现

React的设计思路

原生的JS写UI有以下几个问题:

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

转换式系统:给定输入,求解输出,类似编译器,是一个数值计算
响应式系统:监听事件,消息驱动,当事件发生,事件会扩散,变量会改动,注重监控系统和UI界面的改变。
由于前端的特性,响应式系统更适用,当事件发生以后,执行既定的回调函数,导致状态变更,UI更新。
对前端框架的期待

  • 状态更新,UI自动更新
  • 前端代码组件化,可复用,可封装
  • 状态之间的互相依赖关系,只需要声明即可
组件化总结
  • 组件是组件的组合/原子组件
  • 组件内拥有状态,外部不可见
  • 父组件可以将状态传入组件内部,父组件通过传统状态控制子组件,从上往下传导的,向上找最近的节点
如果想让两个组件状态共享,就找状态归属于两个节点向上寻找到最近的祖宗节点。
Javascript中函数是一等公民,如果要传递状态,可以从父组件传递函数到子组件。函数可以改变父组件的状态。React是单向数据流,父组件给子组件传,但是子组件可以改变父组件的状态(父组件传递函数到子组件,子组件执行函数,改变父组件状态,但并不是双向数据流)。

组件设计

  • 组件声明了状态和UI的映射
  • 组件有Props(从外界传入的,开放的)/State(私自的)两种状态
  • “组件”可以由其他组件拼装而成

组件的设计思路

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

React组件的生命周期

React组件生命周期.png