当前位置: 首页 > news >正文

第55节—— redux-toolkit中的createReducer——了解

一、概念

当我们使用 Redux 开发应用程序时,一个非常重要的概念就是 reducer。一个 reducer 是一个纯函数,它接受先前的状态和一个动作,然后返回一个新状态。每个动作都会引起状态的变化,从而使应用程序状态管理更加清晰和可控。

在 Redux Toolkit 中,createReducer 方法是一个用于创建 reducer 的简单工具,它可以将多个 reducer 函数组合成一个 reducer 函数,并使用更简洁的语法定义 reducer 函数。使用 createReducer 可以大大简化编写 reducer 函数的过程。

二、基本语法

1、基本语法

import { createReducer } from '@reduxjs/toolkit';
/* 最新版rtk已弃用 */
const initialState = { /* 初始状态 */ };
const myReducer = createReducer(initialState, {actionCreator1: (state, action) => { /* 处理 actionCreator1 */ },actionCreator2: (state, action) => { /* 处理 actionCreator2 */ },...
});

2、使用一个带有多个 case 分支的 switch 语句来定义 reducer 函数

import { createReducer } from '@reduxjs/toolkit';const initialState = { /* 初始状态 */ };
const myReducer = createReducer(initialState, (builder) => {builder.addCase(actionCreator1, (state, action) => { /* 处理 actionCreator1 */ }).addCase(actionCreator2, (state, action) => { /* 处理 actionCreator2 */ })...
});

三、例子

1、创建counter-reducer.js文件

const initialState = {// 初始状态count: 0
};// 使用createReducer创建Reducer函数
const counterReducer = createReducer(initialState, {// 处理increment actionincrement: (state) => {state.count += 1;},// 处理decrement actiondecrement: (state) => {state.count -= 1;},// 处理reset actionreset: (state) => {state.count = 0;}
});

2、在store文件引入

import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterReducer';const store = configureStore({reducer: counterReducer
});

3、页面中使用完成加、减、重置功能

import React from 'react';
import { useDispatch, useSelector } from 'react-redux';const Counter = () => {const count = useSelector(state => state.count);const dispatch = useDispatch();return (<div><h1>Count: {count}</h1>{/*dispatch方法中直接调用定义的reducer的方法*/}<button onClick={() => dispatch({type: 'increment'})}>Increment</button><button onClick={() => dispatch({type: 'decrement'})}>Decrement</button></div>);
};export default Counter;
http://www.lryc.cn/news/191997.html

相关文章:

  • JUC并发编程——JUC并发编程概述及Lock锁(重点)(基于狂神说的学习笔记)
  • 深入了解 Java 中的时间信息定义、转换、比较和操作
  • 2023年中国智能矿山发展历程及趋势分析:智能矿山健康有序发展[图]
  • acwing算法基础之基础算法--整数离散化算法
  • 基于SSM框架的安全教育平台
  • Kafka生产者使用案例
  • EasyX图形库实现贪吃蛇游戏
  • 利用 Amazon CodeWhisperer 激发孩子的编程兴趣
  • 2023年中国分子筛稀土催化材料竞争格局及行业市场规模分析[图]
  • vue3插件——vue-web-screen-shot——实现页面截图功能
  • 简单总结Centos7安装Tomcat10.0版本
  • ffmpeg中AVCodecContext和AVCodec的关系分析
  • 2023年中国门把手产量、销量及市场规模分析[图]
  • HTML 核心技术点基础详细解析以及综合小案例
  • BAT学习——批处理脚本(也称为BAT文件)常用语法元素与命令
  • AMD AFMF不但能用在游戏,也适用于视频
  • CSS 常用样式浮动属性
  • Linux引导故障排除:从问题到解决方案的详细指南
  • 【vim 学习系列文章 6 -- vim 如何从上次退出的位置打开文件】
  • 怎样学习C#上位机编程?
  • 【算法-动态规划】两个字符串的删除操作-力扣 583
  • 【06】基础知识:typescript中的泛型
  • flutter 绘制原理探究
  • [Java]SPI扩展功能
  • 机器人命令表设计
  • STM32--WDG看门狗
  • (※)力扣刷题-字符串-实现 strStr()(KMP算法)
  • Redis 集群 Redis 事务 Redis 流水线 Redis 发布订阅 Redis Lua脚本操作
  • 【算法与数据结构】--常见数据结构--栈和队列
  • Linux shell编程学习笔记11:关系运算