这是我参与「第五届青训营 」伴学笔记创作活动的第 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(私自的)两种状态
- “组件”可以由其他组件拼装而成
组件的设计思路
- 组件内部拥有私有状态State
- 组件接受外部的Props状态提供复用性
- 根据当前的State/Props,返回一个UI
React组件的生命周期: