这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
一、React的历史与应用
- 前端应用开发
- 移动端应用开发
- 桌面应用开发
- 也可以写3d的内容
React的历史发展:
二、React的解决思路
用原生的JS写UI的话,会有很多麻烦
转换式系统与响应式系统:
比如一个购物官网,当商品的颜色或者大小发生改变的时候,它的价格和显示图片外观也得发生改变,但是如果采用原生JS写的话就会操作很多个结点和很多个onclick事件,所以前端代码组件化和UI的自动更新会简单和省事。
组件化
选择颜色可以作为一个组件,选择型号可以作为一个组件
对于组件化要明确状态归属问题,比如当前价格这个属于root节点会合适
状态向上,比如内容和顶栏都会用到当前价格
1、React是单向数据流,父组件可以给子组件传东西,而子组件不能给父组件传东西,但是并不代表子组件不能改变父组件的内容,可以通过函数
组件设计:
组件化的代码特征:
三、React(hooks)的写法
React的具体代码:声明一个状态需要手动的去调用useState的这个函数(设定初始值),这个函数传入一个状态的初始值,然后它返回一个数组,这个数组第一个是这个状态本身,第二个是这个函数的set设置。改变这个状态不是简单的count+1,而是通过手动调用setCount(count+1),这就是react的封装。
副作用:组件是内部影响,它不会改变外部。但是有的组件会影响外部,比如改变了标题之类的。一旦影响了外部,则要加上useEffect这个函数
四、React的实现
有几个问题:
- 问题一:JSX不符合JS标准语法
- 问题二:返回的JSX发生改变时如何更新DOM
五、React状态管理库
核心思想:不需要将组件从root往下传传传,
推荐的状态管理库: