React Redux 工具包 Redux Toolkit 初步学习

2023-05-16

Redux 工具包(Redux Toolkit )的目标是帮助简化常见的 Redux 用例。它并不是你想要用 Redux 做的所有事情的完整解决方案,但它应该使你需要编写的许多与 Redux 相关的代码变得更简单(或者在某些情况下,完全消除一些手写代码)。
Redux Toolkit 导出了几个可以在应用程序中使用的单独函数,并添加了对 Redux 常用的其他一些包(如 Reselect 和 Redux-Thunk)的依赖关系。这使您可以决定如何在自己的应用程序中使用这些应用程序,无论是全新的项目还是更新大型现有应用程序。

在了解Redux Toolkit 前首先需要了解Redux是如何工作

store 负责存储数据,相当于仓库,action负责dispatch派发数据,reducer负责接收处理数据然后交给store(个人理解 可能有些偏差 欢迎交流斧正)

传统redux写法(旧)

//reducer
const counterReducer = (state = { counter: 0 }, action) => {

    if (action.type === "increment") {

        return {

            counter: state.counter + 1,

        };

    }

    if (action.type === "increase") {

        return {

            counter: state.counter + action.amount,

        };

    }

    if (action.type === "decrement") {

        return {

            counter: state.counter - 1,

        };

    }

    return state;

}
//连接到store
const store = createStore(counterReducer)

使用reduxjs/toolkit(新)

新的写法主要体现在reducer的简化上

//reducer
const countSlice= createSlice(

    {

        name: "counter",

        initialState: { counter: 0 },

        reducers: {

            increment(state) {

                state.counter++;//在redux中这种写法不被允许 在toolkit中被允许

            },

            decrement(state) {

                state.counter--;

            },

            increase(state, action) {

                state.counter += action.payload;

            },

  

        }

    }

)
  
//连接到store
const store = configureStore(

    {

        reducer: { counter: countSlice.reducer}//作为一个对象处理多reducer

    }

    )

简单使用步骤

  1. 创建reducer文件
import { createSlice } from '@reduxjs/toolkit';
1. 创建切片
const uiSlice = createSlice({
  name: 'ui',
  initialState: { cartIsVisible: false },
  reducers: {
    toggle(state) {
      state.cartIsVisible = !state.cartIsVisible;
    }
  }
});
3、将actions导出
export const uiActions = uiSlice.actions;
2、将切片导出
export default uiSlice;
  1. 在store中引入reducer
import { configureStore } from '@reduxjs/toolkit';

import uiSlice from './ui-slice';
import cartSlice from './cart-slice';
4 在store中引入切片
const store = configureStore({
  reducer: { ui: uiSlice.reducer, cart: cartSlice.reducer },
});

export default store;
  1. 在index.js中包裹根组件
import ReactDOM from 'react-dom/client';
import { Provider } from 'react-redux';
import store from './store/index';
import './index.css';
import App from './App';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <Provider store={store}>
    <App />
  </Provider>
);
  1. 在组件中使用dispatch派发actions
import { useDispatch} from 'react-redux';
import { uiActions } from '../../store/ui-slice';
const dispatch = useDispatch();
const toggleCartHandler = () => {
dispatch(uiActions.toggle()); //5toggle 1步骤中reducer的action之一

};
  1. 使用useSelecter接收数据
import { useSelector } from 'react-redux';
const Cart = (props) => {
const cartItems = useSelector((state) => state.cart.items);

最后附上官方文档

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Redux 工具包 Redux Toolkit 初步学习 的相关文章

  • STM32学习——串口数据收发

    STM32学习 串口数据收发 61 61 STM32的串口通信 61 61 61 61 HAL库中串口发送的重要函数 61 61 61 61 STM32定时器实训 61 61 STM32的串口通信 异步串行通信 xff1a 通信双方在没有同
  • 赛目科技2023校园招聘火热进行中!(算法/开发等多个岗位)

    点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之心 求职交流 技术交流群 一 赛目概况 我们是专注于仿真技术自主创新的技术驱动型公司 xff0c 主要从事 ICV 仿真测 试
  • 多模态运动数据采集系统

    为给研究人员提供更多有效的多模态同步数据集 xff0c 合肥工业大学的程景铭团队设计了一个多模态运动数据采集系统 xff0c 采集了包含全身运动多模态数据集 xff0c 并利用已有算法对数据集进行了评估测试 多模态运动数据采集系统 多模态运
  • 【STM32】 STM32 F4 串口通讯

    概念 串口 xff0c 即串行接口 xff0c 是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去 xff0c 同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件 串口通信 xff08 Serial Commu
  • 【安装】安装ros机器人系统和无人机环境配置常见问题总结

    安装ros机器人系统和无人机环境配置常见问题总结 一 安装ROS二 无人机环境配置更多安装 Ubuntu16 04安装ros xff1a http wiki ros org cn kinetic Installation Ubuntu Ub
  • ubuntu18.04搭建python环境

    注意 xff1a 我使用的是虚拟机 xff0c 在操作前请确保虚拟机可以访问到网络 1 安装python3 9 0解释器 xff0c 配置环境变量 2 配置虚拟环境 一 安装python3 9 0 到 opt python39 更新软件源
  • vscode生成的exe文件出现中文乱码的问题

    问题描述 vscode生成的exe文件出现中文乱码的问题 解决方案 xff1a 头文件处添加 xff1a span class token macro property span class token directive hash spa
  • c++进行函数重载时报错:此运算符函数的参数太多C/C++(344)

    问题描述 c 43 43 进行函数重载时报错 xff1a 此运算符函数的参数太多C C 43 43 344 原因分析 xff1a C 43 43 中类内运算符重载时只能有且仅有一个参数 解决方案 xff1a 方案一 xff1a 将重载函数作
  • c++中加入随机种子的方法

    c 43 43 中加入随机种子的方法 提示 xff1a c 43 43 中加入随机种子的方法 解决方案 xff1a span class token macro property span class token directive has
  • STM32 第5讲 MDK下载安装注册及配置

    目录 MDK下载安装注册MDK简介MDK下载MDK安装器件支持包安装注册鸡 MDK配置 MDK下载安装注册 MDK简介 MDK不同版本对比 MDK下载 MDK安装使用 61 MDK软件安装 43 器件支持包安装 MDK软件下载 xff1a
  • STM32 第7讲 STM32F407系列系统架构及映射

    Cortex M内核 amp 芯片 F407系统架构 注 xff1a 64KB CCM 内核耦合存储器 数据 RAM不属于总线矩阵 xff0c 只能存数据 xff0c 不支持DMA xff0c 但访问速度快 总线矩阵 xff1a 总线矩阵用
  • 稳了!理想汽车一季报亮眼,禾赛或成大赢家

    作者 Alan 编辑 激光雷达老炮儿 点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 5月10日 xff0c 理想汽车公布2023年第一季度财报 xff0c 季度营收和交付量双双创下历史新高 第
  • STM32 第9讲 STM32CubeMX简介安装和简单使用

    文章目录 STM32CubeMX安装安装JAVA环境安装STM32CubeMX下载关联STM32Cube固件包 新建工程芯片选型配置时钟源时钟树配置GPIO引脚配置Debug选项配置生成工程编写逻辑代码 STM32CubeMX安装 STM3
  • STM32 第11讲 正点原子SYSTEM文件夹介绍及使用(sys/delay/usart)

    文章目录 sys文件夹delay文件夹函数简介Systick定时器工作原理寄存器函数介绍 usart文件夹printf函数输出流程printf函数的使用printf函数支持微库法代码法 SYSTEM 文件夹里面的代码由正点原子提供 xff0
  • STM32 第20讲 通用定时器(简介/框图/时钟源)

    通用定时器 简介定时器框图时钟源计数器时钟源寄存器设置方法内部时钟 CK INT 外部时钟模式1 xff08 TI1 TI2 xff09 外部时钟模式2 xff08 ETR xff09 内部触发输入 xff08 ITRx xff09 基本定
  • C语言程序设计 第 9 讲 初识结构体

    初识结构体 结构的声明结构成员的类型结构体变量的定义和初始化结构体成员的访问结构体传参 结构是一些值的集合 xff0c 结构体的值类型可以不同 xff0c 这些值称为结构体的成员变量 结构的声明 span class token keywo
  • C语言程序设计 第 10 讲 数据的存储

    数据的存储 数据类型介绍数据的存储整数大端小端浮点数的存储规则 数据类型介绍 C语言基本内置类型 span class token keyword char span span class token comment 字符数据类型 span
  • rtklib--伪距单点定位(single-point positioning)学习(1)Satposs

    目录 前言pntpos总体调用流程图Satposs总体调用流程图 xff1a 1 Satposs 按照所观测到的卫星顺序计算出每颗卫星的位置 速度 钟差 频漂 2 ephclk 通过广播星历来确定卫星钟偏3 stasys 根据卫星编号确定该
  • 创建工作空间与功能包的指令

    1 创建工作空间 Ctrl 43 Alt 43 T 打开终端 执行以下指令 创建工作空间 mkdir p catkin ws src cd catkin ws src catkin init workspace 编译工作空间 cd catk
  • Ubuntu 安装 ROS 教程

    Ubuntu 安装 ROS 一 修改为国内镜像源二 ROS 官网安装介绍 xff08 kinetic 16 04 melodic 18 04 noetic 20 04 xff09 三 ROS 安装步骤1 添加 ROS 软件源到 source

随机推荐

  • 运行rosdep update报错:ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/

    解决办法 xff1a 点击此处跳转
  • ubuntu编译camera_model报错:fatal error: elfutils/libdw.h: 没有那个文件或目录

    一 报错 二 解决 执行指令 sudo apt span class token operator span get install libdw span class token operator span dev
  • 聊一聊SLAM核心算法之ESKF多传感器融合算法

    作者 应知 编辑 汽车人 原文链接 xff1a https zhuanlan zhihu com p 628074965 点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之心
  • Ubuntu20.04跑VINS-fusion

    Ubuntu20 04跑VINS Fusion 使用docker 由于工程较大 xff0c 依赖较多 xff0c 环境配置十分繁琐 xff0c 故使用docker环境来运行VINS Fusion Docker 可以让开发者打包他们的应用以及
  • ubuntu20.04跑PL-VINS

    PL VINS源码 xff1a https github com cnqiangfu PL VINS 编译时报错 catkin make Ceres报错 报错信息 CMake Error at usr local lib cmake Cer
  • unubtu20.04环境下inter d435i相机标定遇到的一些问题

    前言 最近拿到深度相机inter d435i 但是在ros开发中遇到了一些问题 这里我就将我遇到的问题跟解决的办法讲一下 我采用的是双系统ubuntu系统环境下开发的 并不是基于虚拟机开发的 先提一下 问题1 select timeout报
  • 页面报错:Invalid prop: custom validator check failed for prop “percentage“.

    问题 xff1a 使用element 组件库的el progress组件 xff0c 页面正常渲染 xff0c 但是控制台有报错 xff1a 出现问题代码如下 xff1a lt el progress percentage 61 34 en
  • 将mysql中的数据导入到hdfs中

    将mysql中的数据导入到hdfs中 mysql中的数据导入到hdfs中 xff0c 需要借助一个工具sqoop完成 xff0c sqoop的安装和简介请点大数据必学框架 sqoop 一 配置sqoop环境 为了能够让sqoop识别到hdf
  • 串口通信——串口接收数据,发送数据

    十六进制 HEX hexadecimal heks des ml 十进制 DEC decimalism 39 desim liz m 二进制 BIN binary ba n ri 八进制 OCT octonary kt n ri 波特率计算
  • 大疆半固态激光雷达Horizon的优缺点

    原文链接 xff1a 大疆激光雷达 xff0c 车厂为何不爱 xff1f 优点 xff1a 1 成本低 xff0c 可以量产 xff1a 2020 年 xff0c 在当年的 CES 展会上 xff0c 大疆 Livox 发布了 Horizo
  • Ubuntu18.04切换Python版本

    转载自 xff1a Ubuntu18 04 切换 Python 版本 前言 Ubuntu18 04 默认安装了两个版本 Python2 7 和 Python3 6 查看可用二进制文件 ls usr bin python 过程 使用 upda
  • 解决ubuntu1604联网以后网页还是打不开的问题

    ubuntu系统连接正常的联网的网线但是网页还是打不开 xff0c 所有联网的软件也打不开 xff0c 在路由器工作正常的情况下 xff0c 可能出现的问题为dns解析异常 xff0c 关于dns解析异常的解决方法 xff1a 这段时间在u
  • 操作系统--线程并发实验三

    操作系统 线程并发实验三 一 实验目的 线程的运行时并发的 xff0c 如果互不相干的线程交替运行不会产生问题 但是如果有共享资源 合作关系的线程之间由于交替运行可能产生问题 xff0c 例如偶尔出现程序的结果不正常 理解临界区的概念 xf
  • 安装OOQP遇到问题

    Ubuntu20 04 安装OOQP遇到问题 OOQP安装 OOQP安装 MA27是OOQP的依赖 在安装MA27时容易出现找不到fortran77等情况 xff0c 在配置这些环境时容易出现其他错误导致系统环境出现问题 选择其他版本的安装
  • 15个好用的百度网盘搜索引擎

    15个好用的百度网盘搜索引擎 前言 分享 15 个好用的百度网盘搜索引擎 xff0c 方便大家搜索百度云网盘分享的资源文件 挑出来这 15 个效果还不错 xff0c 都可以正常使用 挑选标准 xff1a 免费 xff0c 大部分不登录可用
  • 操作系统死锁实验六

    操作系统死锁实验六 一 实验目的 如果一个进程集合中的每个进程都在等待只能由该进程集合中的其他进程才能引发的事件那么该进程集合就是死锁的 产生死锁的必要条件 xff1a 互斥 xff1b 请求资源和保持已获得资源不释放 xff1b 不可抢占
  • 修复 Windows11 打不开 Windows安全中心

    修复 Windows 打不开 Windows安全中心 遇到以上问题我们直接上解决方法 win10的话直接WIN 徽标 43 X键 win11 菜单栏输入 PowerShell 管理员启动 管理员权限打开PowerShell xff0c 依次
  • webstorm/idea 配置less环境

    看了一下发现大多数教程少了最关键的一步 如果这个lessc不能自动识别的话 需要手动寻找lessc cmd的路径 xff0c 可以在终端中通过 where lessc查找 复制lessc cmd位置就可以了
  • 自定义http钩子

    简单创建一个自定义http钩子函数 span class token keyword import span span class token punctuation span useState span class token punct
  • React Redux 工具包 Redux Toolkit 初步学习

    Redux 工具包 xff08 Redux Toolkit xff09 的目标是帮助简化常见的 Redux 用例 它并不是你想要用 Redux 做的所有事情的完整解决方案 xff0c 但它应该使你需要编写的许多与 Redux 相关的代码变得