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

56 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

一、React的历史与应用

  • 前端应用开发
  • 移动端应用开发
  • 桌面应用开发
  • 也可以写3d的内容

image.png

React的历史发展:

image.png

二、React的解决思路

用原生的JS写UI的话,会有很多麻烦

image.png

转换式系统与响应式系统:

image.png

image.png

image.png

比如一个购物官网,当商品的颜色或者大小发生改变的时候,它的价格和显示图片外观也得发生改变,但是如果采用原生JS写的话就会操作很多个结点和很多个onclick事件,所以前端代码组件化和UI的自动更新会简单和省事。

image.png

组件化

选择颜色可以作为一个组件,选择型号可以作为一个组件 image.png

image.png

对于组件化要明确状态归属问题,比如当前价格这个属于root节点会合适

image.png

状态向上,比如内容和顶栏都会用到当前价格 image.png

1、React是单向数据流,父组件可以给子组件传东西,而子组件不能给父组件传东西,但是并不代表子组件不能改变父组件的内容,可以通过函数

image.png

组件设计:

image.png

组件化的代码特征:

image.png

三、React(hooks)的写法

React的具体代码:声明一个状态需要手动的去调用useState的这个函数(设定初始值),这个函数传入一个状态的初始值,然后它返回一个数组,这个数组第一个是这个状态本身,第二个是这个函数的set设置。改变这个状态不是简单的count+1,而是通过手动调用setCount(count+1),这就是react的封装。

image.png

副作用:组件是内部影响,它不会改变外部。但是有的组件会影响外部,比如改变了标题之类的。一旦影响了外部,则要加上useEffect这个函数

image.png

image.png

四、React的实现

有几个问题:

image.png

  • 问题一:JSX不符合JS标准语法

image.png

  • 问题二:返回的JSX发生改变时如何更新DOM

image.png

五、React状态管理库

核心思想:不需要将组件从root往下传传传,

image.png

推荐的状态管理库:

image.png