【青训营】-?React实战(下)

前言

到目前为止,笔者一直都是用Vue框架开发项目,由于最近参加了字节青训营嘛,课程中学习的框架是React,索性跟着老师来学习一下React,写了这样一篇笔记,如果有和我一样一直在用Vue而没有接触过React的同学欢迎来阅读哇~?

Redux

Redux是什么?

Redux是一个全局状态管理中心,里面保存了状态和状态的管理逻辑

随着组件的逻辑越来越复杂,我们需要专门引入一层来做状态管理相关的事情,Redux就是这样的一层,类似于Vuex。
看下面这个例子:
image.png
通过点击事件触发状态的更新。

Redux中的数据流

image.png
Redux会把Action和State这两部分的工作负责起来,组件需要修改State的时候可以调用Redux中提供的Action,通过Action更改State。

什么时候使用Redux?

当应用足够大,较复杂的时候需要共享状态或者组件需要频繁进行状态共享适合用Redux。

Redux中的术语

Store:存储全局状态

image.png

Action:描述状态发生的变化

image.png

Dispatch:发送一个Action

image.png

Reducer

根据当前应用状态,和接受的action,计算新的状态。

image.png
Redux更新状态的具体流程可见下面动图:

Redux.gif

Redux Toolkit(RTK)

RTK是基于Redux的上层封装库,基于常见业务场景,提供了更加简洁的API,简化Redux的使用复杂度。

创建store

image.png

创建slice

一个slice模块,包含了管理一个子状态所需的所有逻辑(state、actions、reducer等)

image.png

slice实例

image.png

reducer必须是纯函数

image.png

slice使用

获取state

image.png

修改state

image.png

store中的状态放在哪里?

image.png
抽象带来的复杂度和收益不成正比:

  1. 原本可以直接使用的API数据结构需要额外经过2层转换
  2. JS模拟数据库表管理的复杂性,并没有真正的数据库工具做管理

服务端 状态

大部分场景下,API数据是不需要进行扁平化处理的。服务端数据的同步问题,应该交由服务端处理,而不是在前端重复后端工作。API数据的缓存问题,应该由专门的解决方案解决。

其他状态管理方案

  • RTK Query
  • Recoil
  • Context + Hooks

最后

⚽本文介绍了redux的概念和使用及相关知识~
⚾如果你对这篇文章感兴趣欢迎点赞关注+收藏,更多精彩知识正在等你!?
?GitHub 博客地址: github.com/Awu1227
?笔者还有其他专栏,欢迎阅读~
?玩转CSS之美
?Vue从放弃到入门
?深入浅出JavaScript

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享