位置: 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 绑定子组件属性)

  • 笔记本可以当台式机的显示器吗(笔记本可以当台式电脑用吗)

    笔记本可以当台式机的显示器吗(笔记本可以当台式电脑用吗)

  • 为什么探探有消息就是看不到(为什么探探消息没有了)

    为什么探探有消息就是看不到(为什么探探消息没有了)

  • 怎样发一张照片的抖音(怎样发一张照片显示地点不能让人看出是网络盗图)

    怎样发一张照片的抖音(怎样发一张照片显示地点不能让人看出是网络盗图)

  • 荣耀x10的呼吸灯在哪(荣耀x10的呼吸灯怎么设置)

    荣耀x10的呼吸灯在哪(荣耀x10的呼吸灯怎么设置)

  • 联想小新air和pro的区别(联想小新air和pro哪个轻)

    联想小新air和pro的区别(联想小新air和pro哪个轻)

  • iphone变慢的解决办法(iphone变慢怎么办)

    iphone变慢的解决办法(iphone变慢怎么办)

  • 如何查近期微信聊天的人(微信怎样可以查到前几天信息)

    如何查近期微信聊天的人(微信怎样可以查到前几天信息)

  • 扫一扫连接此wlan用什么扫(扫一扫连接此wifi)

    扫一扫连接此wlan用什么扫(扫一扫连接此wifi)

  • ad是哪个公司的软件(ad是哪个公司的简称)

    ad是哪个公司的软件(ad是哪个公司的简称)

  • 华为图标设置在哪(华为图标怎么设置)

    华为图标设置在哪(华为图标怎么设置)

  • 手机qq怎么看q币余额(手机上怎么看q币)

    手机qq怎么看q币余额(手机上怎么看q币)

  • 手机wps怎么删除多余页(手机wps怎么删除不需要的页)

    手机wps怎么删除多余页(手机wps怎么删除不需要的页)

  • 拼多多退货在哪查物流(拼多多退货在哪里看物流)

    拼多多退货在哪查物流(拼多多退货在哪里看物流)

  • 苹果x是不是2k屏幕(苹果x的屏幕是2k的吗?)

    苹果x是不是2k屏幕(苹果x的屏幕是2k的吗?)

  • 6点4英寸的手机多大(手机6点4英寸有多大)

    6点4英寸的手机多大(手机6点4英寸有多大)

  • 扣扣屏蔽对方知道吗(扣扣屏蔽对方会有提示)

    扣扣屏蔽对方知道吗(扣扣屏蔽对方会有提示)

  • 微信后面有个耳朵怎么回事(微信后面有个耳朵标志)

    微信后面有个耳朵怎么回事(微信后面有个耳朵标志)

  • ipad微信朋友圈不能发视频(ipad微信朋友圈为什么发不了视频)

    ipad微信朋友圈不能发视频(ipad微信朋友圈为什么发不了视频)

  • 手机应用不显示在桌面(手机应用不显示名称怎么设置)

    手机应用不显示在桌面(手机应用不显示名称怎么设置)

  • 网易考拉怎么看优惠券(网易考拉怎么看总账单)

    网易考拉怎么看优惠券(网易考拉怎么看总账单)

  • 苹果的本地音乐在哪里(苹果的本地音乐怎么导入网易云)

    苹果的本地音乐在哪里(苹果的本地音乐怎么导入网易云)

  • 踩坑记录1——RK3588编译OpenCV(踩坑视频)

    踩坑记录1——RK3588编译OpenCV(踩坑视频)

  • uuname命令  显示全部的UUCP远端主机(uname命令详解)

    uuname命令 显示全部的UUCP远端主机(uname命令详解)

  • 国际重复征税解决方法有
  • 其他权益工具影响哪些报表
  • 公账的钱取现金
  • 进料加工出口退税政策
  • 员工工资占公司收入比例怎么算
  • 工伤职工应享有的待遇及救济途径
  • 咨询服务费没有发票
  • 固定性制造费用成本差异是
  • 企业接到税务稽查局电话
  • 哪些营业外收入需要缴纳增值税
  • 开了负数发票印花税减掉吗?
  • 税务机关是否可以申请破产清算
  • 小规模纳税人公司注销流程及费用
  • 广告公司可以开维修费吗
  • 个税退税手续费税率
  • 劳务公司差额征收税率是多少
  • 电信猫光信号灯不亮
  • windows11如何
  • 计算机网络默认网关什么意思
  • scanserver.exe - scanserver是什么进程 有什么用
  • 无法找到脚本文件vbs怎么办
  • 详解php比较操作过程
  • 暂估成本跨年怎么处理分录
  • 如何找装修公司
  • 无销售发票的基本户收入?
  • 巴拉诺维奇市
  • 清晨暴雨的说说
  • 试用期不交金后面补缴
  • 合并报表内部交易顺流逆流
  • 公司法人和股东哪个承担的责任大
  • 原生js获取document
  • 公司租赁个人车辆怎么开发票
  • 先付款后开票怎么做账务处理
  • 普票 销项
  • 纳税人遗失税务登记证件并按照规定
  • 福利费用属于哪个部门
  • 事业单位结余分配的去向有
  • 以销售额和年末存货计算的存货周转率公式
  • 个人所得税10月份申报期
  • 核定征收企业盈利怎么算
  • 以前年度损益调整在利润表中怎么填
  • 一般纳税人增值税优惠政策2023
  • 销售提成如何入账
  • 餐饮会计内账怎么记账
  • 收到某单位投入机器一台
  • 已抵扣认证的发票开红字发票需要将原票退回吗
  • 政府代建项目计划方案
  • 公司配股对股价的影响
  • 股权转让如何缴纳个人所得税举例说明
  • 行政拨付工会经费可以用于职工福利发放吗
  • 企业到外地
  • mysql数据库innodb
  • mySQL中in查询与exists查询的区别小结
  • windows10安装教程u盘安装
  • 设置自动清理缓存电脑
  • vs显示进程已退出
  • centos设置终端快捷键
  • CentOS 6.2(32位/64位) 安装步骤图文详解
  • win8点击桌面没反应
  • 误删windows
  • inc是什么软件
  • 联想安装xp系统
  • Mac如何使用Excel
  • 磁盘空间不足怎么弄
  • win7为什么打不开原神
  • win7电脑怎么设置自动锁屏
  • cocos2dx 3.4 lua加密 setXXTEAKeyAndSign
  • js 原型链继承 原型式继承
  • 批处理书
  • 选择照片的快捷键
  • Unity NGUI添加事件监听(转摘)
  • javascript数学函数
  • shell脚本-le
  • js实现全屏
  • ca证书怎么下载安装
  • 如何找回电子税务局企业密码
  • 税控盘如何分配发票
  • 如果贸易后y产品的相对价格下降很大的话
  • 江西省税务局发票查询系统
  • 神马电力几号发行
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设