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

98 阅读2分钟

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

1、react历史与应用

应用:

1、前端应用的开发,如Facebook,Instagram,Netfix网页版
2、移动原生应用开发,如Instagram,Discod,Oculus
3、结合Electorn,进行桌面应用开发。

历史:

1、2010年 Facebook再其php生态中,引入了xhp框架,首次引入了组合式组件的思想,启发了后来的React的设计。
2、2011年 Jordan Walke创造了FaxJS,也是后来的React原型
3、2012年 在facebook收购Instagram后,该FaxJS项目在内部得到使用,Jordan Walke基于FaxJS的经验正式创造了React
4、2013年 React正式开源。

2、React的设计思路

UI的编程痛点:

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

转换式系统:

给定输入,求解输出。如编译器,数值计算

响应式系统:

监听事件,消息驱动,如监控系统,UI界面

前端的UI

事件-> 执行既定的回调 -> 状态变更 ->UI更新

我们希望的React

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

组件化(不是DOM树)
状态的归属问题

在这里 当前价格应该属于Root节点
状态归属于两个节点向上寻找到最近的祖宗节点

总结

1、组件 是组件的组合/原子的组件
2、组件内拥有状态,外部不可见
3、父组件可将状态传入组件内部 4、React是单向数据流(永远是父组件传数据流给子组件,但并不是说子组件的状态发生改变不会影响父组件)

组件设计

1、组件声明了状态和UI的映射
2、组件有Props/State两种状态
3、组件可由其它组件拼装而成

组件

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

3、React(hooks)的实现

1、JSX不符合JS标准语法
2、返回的JSX发生改变时,如何更新DOM (声明一个和DOM对应的虚拟DOM)
3、State/Props更新时,要重新触发render函数

4、状态管理库

核心思想
缺点:组件依恋于外部的store,一般完全应用于应用
状态机:本身有一个状态,发生事情后,会迁移到下一个状态 状态被整个app应用,还是被某个组件应用。