这是我参与「第四届青训营 」笔记创作活动的第2天
初始响应式系统与React
一、React的设计思路
UI编程痛点
1.状态更新,UI不会自动更新,需要手动地调用DOM进行更新。
2.欠缺基本的代码层面的封装和隔离,代码层面没有组件化。
3.UI之间的数据依赖关系,需要手动维护,如果依赖链路长,则会遇到“Callback Hell”。
响应式与转换式
转换式——给定输入求解输出、编译器、数值计算
响应式——事件监听,消息驱动、监控系统、UI界面
转换式系统≠响应式系统
响应式编程
二、React的设计与实现
1.状态更新,UI自动更新。
“状态更新,UI不会自动更新,需要手动地调动DOM进行更新。”
2.前端代码组件化,可复用,可封装。
“欠缺基本的代码层面的封装和隔离,代码层面没有组件化。”
3.状态之间的相互依赖关系,只需声明即可。
“UI之间的数据依赖关系,需要手动维护,如果依赖链路长,则会遇到“Callback Hell”。”
组件化
1.组件是组件的组合/原子组件
2.组件内拥有状态,外部不可见
3.父组件可将状态传入组件内部
组件设计
1.组件声明了状态和UI的映射
2.组件有外部的Props/私有的State两种状态
3.“组件”可由其他组件拼装而成
三、React(hooks)的写法
useState
传入一个初始值,返回一个状态,和set该状态的函数,用户可以通过调用该函数,来实现状态的修改。
useEffect
传入一个函数,和一个数组,数组是状态的数组,称作依赖项,该函数在mount时,和依赖项被set的时候会执行。
❗有副作用的函数,要传入useEffect来执行。副作用代表除了单纯的计算之外,还要做其他的一些事情,比如网络请求,更新DOM,iocalStorage存储数据等。