这是我参与「第四届青训营 」笔记创作活动的第9天
React的设计思路
一、UI编程痛点
- 状态更新,UI无法自动更新,需要手动调用Dom
- 代码层没有组件封装的概念
- UI与数据依赖性太强,牵涉到的依赖越长就越可能引起“callback hell”
响应式设计
- 监听事件、消息 => 执行既定的回调 => 状态变更 => 更新UI
那么希望做到如下三个方面:
- 状态更新,UI自动更新
- 代码组件化,可复用,可封装(组件是组合,内部状态外部不可见,父组件可将状态传递到组件内部)
- 状态之间相互依赖,只需声明即可
React是单向数据流
组间设计: 状态和UI映射、有props(传递)和State两种状态、可有其他组件组成
二、hooks函数
声明时用函数控制改变,手动控制(usestate返回一个数组,变量和它的控制函数)
三、React的实现
- 返回的东西不符合JS标准?
- 转译成下图所示(右)
- 返回部分发生改变如何更新DOM
- 虚拟DOM(真实DOM是浏览器内部的,无法随便改变),因此我们建立一个类似DOM的树状结构并和DOM建立一一对应关系。 3.state/props更新时,要重新触发render函数
- 父组件他下面的子组件以及其后代都要递归render
四、状态管理库
- 将状态抽离到UI外部进行统一管理,将所有组件看做一个UI
- 状态机:收到外部事件,迁移到下一个转态