这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
设计思路
UI编程痛点
- 单纯原生js写会很容易混乱
响应式与转换式
2.最好语义化
组件化
DOM是与实际看到的ui是存在一一对应的关系
3.父组件需要可以控制子组件
状态归属问题
1.只有放root结点才可以价格状态共享
2.大部分状态具有局部性
3.状态归属于两个节点向上最近的祖宗节点
1.单向
2.状态管理库
1.类似于数学函数映射
2.Props外部传入状态/State自身的状态
React(hooks)的写法
副作用:对组件外部影响:1.组件挂载的时候执行一次-网络请求 2.当某个状态改变的时候执行一遍
hooks: 可以挂到react组件生命周期上面执行函数-基本是useState/useEffect。
不能在循环、条件语句、嵌套函数里面执行
React的实现
Problems
Problem2
只改变diff部分
-
真实的DOM是页面内的
-
虚拟的DOM是JS的对象
-
对比真实与虚拟的,更新diff的地方
-
指令式编程:c-过程
-
声明式编程:就是一个指令,不需要底层的
-
响应式编程:声明式编程的一个类别,而且还可以自己响应自己。
问题:很高位置的父组件发生改变会导致它的所有自组件也全部更新
将其中一个树变成另外一个树的最少步骤
三条规则
1.不同类型的时候:从这个结点到根节点全部替换
2.调用setState这种直接更新
React状态管理库
组件依赖于实际的数据store大部分存在于实际业务代码中。library不会这么用。
放在store-只放距离远的需要共享的,需要不同组件共享,
状态机
这些状态是被整个app所拥有的?-放在store里面的状态
因为共同依赖于一个状态库 因此可以共享状态