位置: IT常识 - 正文

Redux工具包(一) - Redux Toolkit的基本使用(redux-tookit)

编辑:rootadmin
Redux工具包(一) - Redux Toolkit的基本使用 文章目录Redux工具包的使用Redux Toolkit介绍Redux Toolkit基本使用Redux工具包的使用Redux Toolkit介绍

推荐整理分享Redux工具包(一) - Redux Toolkit的基本使用(redux-tookit),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:redux的使用流程,redux-tookit,redux/toolkit,redux-toolkit,redux tooltik,redux tool,redux-tookit,redux-toolkit,内容如对您有帮助,希望把文章链接给更多的朋友!

Redux Toolkit 是官方推荐的编写 Redux 逻辑的方法。

在前面我们学习Redux的时候应该已经发现,redux的编写逻辑过于的繁琐和麻烦。

并且代码通常分拆在多个文件中(虽然也可以放到一个文件管理,但是代码量过多,不利于管理);

Redux Toolkit包旨在成为编写Redux逻辑的标准方式,从而解决上面提到的问题;

在很多地方为了称呼方便,也将之称为“RTK”;

安装Redux Toolkit:npm install @reduxjs/toolkit react-redux

Redux Toolkit的核心API主要是如下几个:

configureStore: 包装createStore以提供简化的配置选项和良好的默认值。它可以自动组合你的 slice reducer,添加你提供 的任何 Redux 中间件,redux-thunk默认包含,并启用 Redux DevTools Extension。

createSlice: 接受reducer函数的对象、切片名称和初始状态值,并自动生成切片reducer,并带有相应的actions。

createAsyncThunk: 接受一个动作类型字符串和一个返回承诺的函数,并生成一个pending/fulfilled/rejected基于该承诺分 派动作类型的 thunk

Redux Toolkit基本使用Redux工具包(一) - Redux Toolkit的基本使用(redux-tookit)

configureStore用于创建store对象,常见参数如下:

reducer: 将slice中的reducer可以组成一个对象传入此处;

middleware:可以使用参数,传入其他的中间件(自行了解);

devTools:是否配置devTools工具,默认为true;

import { configureStore } from "@reduxjs/toolkit"// 导入reducerimport counterReducer from "./features/counter"const store = configureStore({ reducer: { counter: counterReducer }, // 例如可以关闭redux-devtool devTools: false})export default store

createSlice主要包含如下几个参数:

name:用户标记slice的名词

在之后的redux-devtool中会显示对应的名词;

initialState:初始化值

第一次初始化时的值;

reducers:相当于之前的reducer函数

对象类型,对象中可以添加很多的函数;

函数类似于redux原来reducer中的一个case语句;

函数的参数:

参数一: state, 当前的state状态参数二: 传递的actions参数, actions有两个属性, 一个是自动生成的type, 另一个是传递的参数放在payload中;

createSlice返回值是一个对象,包含所有的actions;

import { createSlice } from "@reduxjs/toolkit"const counterSlice = createSlice({ name: "counter", initialState: { counter: 99 }, reducers: { // 直接对actions解构拿到payload changeNumber(state, { payload }) { state.counter = state.counter + payload } }})// reducers当中的方法会放在counterSlice的actions中, 用于派发actionexport const { changeNumber } = counterSlice.actions// 注意: 导出的是reducer, 用于在index.js中对reducer进行组合export default counterSlice.reducer

接下来使用store中的counter数据和修改counter的操作和之前一样, 借助于react-redux库进行连接使用

import React, { PureComponent } from 'react'import { connect } from 'react-redux'import { changeNumber } from '../store/features/counter'export class Home extends PureComponent { changeNumber(num) { this.props.changeNumber(num) } render() { const { counter } = this.props return ( <div> <h2>Home</h2> <h2>当前计数: {counter}</h2> <button onClick={() => this.changeNumber(5)}>+5</button> <button onClick={() => this.changeNumber(10)}>+10</button> </div> ) }}// 映射要使用的store中的数据const mapStateToProps = (state) => ({ counter: state.counter.counter})// 映射要派发的方法const mapDispatchToProps = (dispatch) => ({ changeNumber(num) { dispatch(changeNumber(num)) }})export default connect(mapStateToProps, mapDispatchToProps)(Home)
本文链接地址:https://www.jiuchutong.com/zhishi/298886.html 转载请保留说明!

上一篇:torch.cuda常用指令(torch.cuda.is_available())

下一篇:vue3 子组件上绑定(v-model=“xx“) 父组件传过来的值后报错(vue 绑定子组件属性)

  • 高德地图语音包可以自己录制吗(高德地图语音包有哪些)

    高德地图语音包可以自己录制吗(高德地图语音包有哪些)

  • 苹果13pro怎么关闭打开的程序(苹果13pro怎么关手电筒)

    苹果13pro怎么关闭打开的程序(苹果13pro怎么关手电筒)

  • 如何建立微信群(如何建立微信群做群主)

    如何建立微信群(如何建立微信群做群主)

  • 支付宝怎么充抖音币(支付宝怎么充抖音抖币)

    支付宝怎么充抖音币(支付宝怎么充抖音抖币)

  • 无法访问指定设备路径或文件怎么回事(无法访问指定设备)

    无法访问指定设备路径或文件怎么回事(无法访问指定设备)

  • 钉钉悬浮窗为什么退出去就没有了(钉钉悬浮窗为什么一退出就没有了)

    钉钉悬浮窗为什么退出去就没有了(钉钉悬浮窗为什么一退出就没有了)

  • 在word2010中为图片怎么设置文字环绕方式(在word2010中为图片设置文字环绕方式时)

    在word2010中为图片怎么设置文字环绕方式(在word2010中为图片设置文字环绕方式时)

  • vivi手机是哪个公司的(vivi手机哪个系列不好)

    vivi手机是哪个公司的(vivi手机哪个系列不好)

  • 华为手机更多设置在哪里(华为手机更多设置里面没有相机)

    华为手机更多设置在哪里(华为手机更多设置里面没有相机)

  • 芒果tv超前点播怎么弄(芒果tv超前点播怎么免费观看)

    芒果tv超前点播怎么弄(芒果tv超前点播怎么免费观看)

  • 一个路由器可以连接几台电视(一个路由器可以连接几台电脑)

    一个路由器可以连接几台电视(一个路由器可以连接几台电脑)

  • 手机屏幕不受控制(手机屏幕不受控制怎么办华为手机)

    手机屏幕不受控制(手机屏幕不受控制怎么办华为手机)

  • 三星g9730是什么版本(三星g9738是什么型号)

    三星g9730是什么版本(三星g9738是什么型号)

  • 苹果x闪屏是屏幕坏了吗(苹果x闪屏是屏幕问题吗)

    苹果x闪屏是屏幕坏了吗(苹果x闪屏是屏幕问题吗)

  • vue视频怎么变声音(vue怎么变声音)

    vue视频怎么变声音(vue怎么变声音)

  • 苹果11pro电池百分比怎么设置(苹果11pro电池百分比)

    苹果11pro电池百分比怎么设置(苹果11pro电池百分比)

  • 浏览器为什么占用内存那么大(浏览器为什么占用内存)

    浏览器为什么占用内存那么大(浏览器为什么占用内存)

  • 华为手机备忘录怎么改底色(华为手机备忘录怎么导入oppo手机)

    华为手机备忘录怎么改底色(华为手机备忘录怎么导入oppo手机)

  • m2接口长什么样(m.2固态硬盘和ssd区别)

    m2接口长什么样(m.2固态硬盘和ssd区别)

  • 华为钱包门禁卡用不了(华为钱包门禁卡模拟成功但是打不开)

    华为钱包门禁卡用不了(华为钱包门禁卡模拟成功但是打不开)

  • 抖音蹦迪灯光特效在哪(抖音蹦迪灯光特效视频)

    抖音蹦迪灯光特效在哪(抖音蹦迪灯光特效视频)

  • iqoo双wifi怎么设置(iqoopro双wifi 怎么打开)

    iqoo双wifi怎么设置(iqoopro双wifi 怎么打开)

  • 表格底色如何设置(表格底色设置)

    表格底色如何设置(表格底色设置)

  • KB4489888更新内容有哪些(kb4586853更新)

    KB4489888更新内容有哪些(kb4586853更新)

  • 个体户可选择不交税吗
  • 机票和发票是一样的吗
  • 开农贸市场挣钱吗
  • 顺流交易为什么调整被投资方
  • 其他债权投资的交易费用计入什么科目
  • 商誉在资产负债表中如何体现
  • 办公用品普通发票的会计分录
  • 公司向法人还回借款现金的分录
  • 认证不抵扣的账务处理
  • 弥补以前年度亏损从哪里取数
  • 长期股权投资的账面价值怎么计算
  • 货币性短期薪酬影响损益的金额
  • 举办活动的工作要求
  • 收到的扶贫工作经费会计分录
  • 年底结账时利息收入怎么做处理?
  • 进项税过期不抵扣怎么写会计分录?
  • 私人企业的资金来源
  • 互联网合同要交社保吗
  • 企业管理与咨询机构
  • 砂石开采销售需什么资质
  • 环境资源的含义
  • 进出口商品应该符合哪个国家的标准
  • 购销合同印花税2023年新规定
  • 原材料账户期末贷方余额反映
  • 存货跌价准备如何结转
  • 学校收取食堂管理费
  • 小规模印花税减免性质代码怎么填
  • 劳务费个税扣税
  • 债权人撤销权诉讼有效债权为前提
  • mac可以制作win启动盘吗
  • 加班餐费税前扣除问题
  • PHP:Memcached::incrementByKey()的用法_Memcached类
  • 增值税中非经营活动包括哪些
  • PHP:connection_status()的用法_misc函数
  • 房产权利转移
  • 城镇土地使用税纳税义务发生时间
  • 合同的第三方指什么
  • 企业所得税税前扣除和不扣除的区别
  • 增值税检查后的调账方法
  • ChatGPT-Next-Web:Vercel 和 Cloudflare 的快速部署
  • 21年前端面试题
  • web前端视频教程全套
  • Vue3通透教程【二】更高效的构建工具—Vite
  • 做了几年前端基础还是很差
  • ip命令查看ip地址
  • php zmq
  • 城镇土地使用税减免税政策
  • 收到客户付款多久到账
  • 织梦百科
  • 增值税专用发票几个点
  • 印花税不减免
  • 休产假的工资扣个人所得税吗
  • 现金流量表两年数据分析
  • 有借款合同还要写借条吗
  • 为什么一般纳税人税率高
  • 支付政协扶贫款怎么做账
  • 一年的系统服务费多少钱
  • 同一张发票报销两次会被发现吗
  • 实缴发票和月结发票知乎
  • 什么样的发票公司可以开
  • 总分类账,明细分类账,日记账
  • 非金融企业间借款利息开票税率
  • linux 对比文件
  • 如何让xp系统崩溃
  • 微软补丁发布时间
  • win7资源管理器不停的崩溃重启
  • 关于session的用法哪些是错误的
  • Windows下自动备份MongoDB的批处理脚本
  • nginx日志路径配置
  • 监控服务器安装教程
  • 迁移图片到另一台设备什么意思
  • jQuery Validation PlugIn的使用方法详解
  • for循环取数据
  • mysql里多表查询语句怎么写
  • 合肥地税局客服电话
  • 报销的费用交印花税吗
  • 重庆市国税网官方网站
  • 临时搭建的活动叫什么
  • 企业职工病退后一般能领多少钱
  • 辽宁国家税务总局电子税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设