Redux toolkit

news2024/11/20 17:03:47

Redux 是 JavaScript 应用的状态容器,提供可预测的状态管理。

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

入门 Redux | Redux 中文官网

本案例是一个加,减的计算器,从零到壹

1、创建一个react的项目

Create-react-app react-toolkit

2、下载toolkit的依赖

npm i @reduxjs/toolkit

3、下载react-redux的依赖

npm i react-redux

4、在src目录下创建store文件夹:如:

5、在 /src/store/index.js 中创建store

// 创建store
import {configureStore} from '@reduxjs/toolkit'
// 引入reducer模块中的counter处理函数
import counter from './modules/counter'

const store = configureStore({
    reducer:{
        counter
    }
})

export default store

 6、在 /src/modules/counter.js 中 创建处理count的函数

// 创建reducer函数
import { createSlice } from '@reduxjs/toolkit'

const counter = createSlice({
    name:'counter',//命名空间,name的值会作为action中type的前缀
    // 初始状态值
    initialState:{
        count:10
    },
    // 跟新状态的函数
    // 内置了immutable.js插件
    reducers:{
        // 加法
        addcount(preState,action){
            preState.count ++
        },
        // 减法
        subcount(preState){
            preState.count --
        }
    }
})
// 导出相关的函数
export const {addcount,subcount} = counter.actions

// 异步action
export const subAsync = ()=>{
    return async(dispath)=>{
        setTimeout(()=>{
            dispath(subcount())
        },3000)
        
    }
}
// 导出counter中的reducer
export default counter.reducer

7、在根文件中使用,index.js

 8、更新状态


import './App.css';
import {useDispatch, useSelector} from 'react-redux'
import {addcount,subAsync} from './store/modules/counter'
function App() {
  // 共享状态,返回Redux的store中对dispatch的引用,可执行redux中的方法
  const dispath = useDispatch()
  // 共享状态,从redux中的store提取数据state
  const {count} = useSelector(state=>state.counter)
  return (
    <div className="App">
      取到的值:{count}
      <button onClick={()=>{dispath(addcount())}}>+</button>
      <button onClick={()=>{ dispath(subAsync())}}>-</button>
    </div>
  );
}

export default App;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/194192.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MybatisX快速生成增删改查

MybatisX快速生成增删改查 MybatisX 是一款基于 IDEA 的快速开发插件&#xff0c;方便在使用mybatis以及mybatis-plus开始时简化繁琐的重复操作&#xff0c;提高开发速率。 注意&#xff1a;idea得用最新的版本才能生效一些功能&#xff0c;我用的是2021.3版本的 1 安装 file …

【Unity VR开发】结合VRTK4.0:直线

桃花坞里桃花庵&#xff0c;桃花庵里桃花仙。桃花仙人种桃树&#xff0c;又折桃花当酒钱。 酒醒只在花前坐&#xff0c;酒醉还来花下眠。半醉半醒日复日&#xff0c;花落花开年复年。 但愿老死花酒间&#xff0c;不愿鞠躬车马前。车尘马足富者趣&#xff0c;酒盏花枝贫者缘。…

新C++(7):多态那些事儿_上

"也应该歌颂赞美那株鲜红的玫瑰。"一、回顾多态(1)什么是多态呢在编程语言和类型轮中&#xff0c;多态&#xff08;英语&#xff1a;polymorphism&#xff09;指为不同数据类型的实体提供统一的接口。多态类型(英语:polymorphic type&#xff09;可以将自身所支持的操…

FreeRTOS任务通知实验

从 V8.2.0 版本开始&#xff0c;FreeRTOS 新增了任务通知这个功能&#xff0c;可以使用任务通 知来代替信号量、消息队列、事件组等这些东西。使用任务通知的话效率会更高。 本章要实现的功能是&#xff1a;使用任务通知方式实现消息队列、二值信号量、计数信号 量、事件标记功…

极狐场景化造车理念受热捧,北汽蓝谷构建未来5年核心竞争力

近日&#xff0c;极狐汽车以“一米视角”为设计思考的原点&#xff0c;围绕亲子出行的全场景&#xff0c;推出全球首款智能亲子车——考拉。作为北汽蓝谷场景化造车的首款产品&#xff0c;极狐汽车考拉无疑是继高阶智能驾驶标杆产品HI之后的又一次先行探索&#xff0c;致力于卡…

1月VR大数据:Quest 2增长2.91%,HTC份额跌至10%以下

Hello大家好&#xff0c;每月一期的VR内容/硬件大数据统计又和大家见面了。 想了解VR软硬件行情么&#xff1f;关注这里就对了。我们会统计Steam平台的用户及内容等数据&#xff0c;每月初准时为你推送&#xff0c;不要错过喔&#xff01;本数据报告包含&#xff1a;Steam VR硬…

初识C语言(对c语言的简单介绍)

初识C语言什么是C语言&#xff1f;第一个C语言程序数据类型类型的使用&#xff1a;变量、常量定义变量的方法变量的分类变量的使用变量的作用域和生命周期常量字符串转义字符注释字符串转义字符注释选择语句循环语句函数数组数组定义数组的使用操作符常见关键字关键字 typedef关…

MySQL进阶篇之SQL优化

03、SQL优化 3.1、插入数据 1、insert优化 批量插入 INSERT INTO 表名 (字段1,字段2,...) VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...);INSERT INTO 表名 VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...);手动提交事务 start transaction; INSERT INTO 表名 (字段1…

【SQL 审核查询平台】Archery使用介绍

Archery 读作&#xff1a;[ˈɑːrtʃəri] Archery目录界面截图功能清单依赖清单框架前端组件服务端部署准备运行配置启动访问修改配置项基础设置添加实例添加资源组资源组关联用户/实例添加权限组用户关联权限组/权限设置工单上线和查询的审批流程设置默认资源组和默认权限组…

数组的几种常见方法及其返回值

push()&#xff1a;向数组的末尾添加一个或多个元素&#xff1b;返回的是数组的新长度。unshift()&#xff1a;向数组的开头添加一个或多个元素&#xff1b;返回的是数组的新长度。shift()&#xff1a;删除数组的第一个元素&#xff0c;并返回被删除的&#xff08;即第一个元素…

品牌社交营销链路 | 小红书数据分析网站

【导语】 2022年&#xff0c;小红书品牌推广竞争愈演愈烈&#xff0c;从小红书用户画像分析&#xff0c;到抢占小红书关键词排名&#xff0c;营销动作内卷升级&#xff0c;那么在2023的新篇章&#xff0c;如何打通社交种草的链路呢&#xff1f; 1、运营企业账号&#xff0c;建立…

MQTT 代理助力ECARX实现汽车智能互联

一、应用背景 ECARX是中国汽车制造商吉利旗下的一家科技创新企业&#xff0c;致力于持续打造行业领先的智能网联生态开放平台&#xff0c;全面为车企赋能&#xff0c;创造更智能、更安全的出行体验&#xff0c;为智能互联汽车提供智能解决方案。 ECARX主要业务包括吉利汽车的…

让Apache Beam在GCP Cloud Dataflow上跑起来

简介 在文章《Apache Beam入门及Java SDK开发初体验》中大概讲了Apapche Beam的简单概念和本地运行&#xff0c;本文将讲解如何把代码运行在GCP Cloud Dataflow上。 本地运行 通过maven命令来创建项目&#xff1a; mvn archetype:generate \-DarchetypeGroupIdorg.apache.b…

Swift 新 async/await 同步机制小技巧:消除“多余”的 await 关键字

概览 在使用多个Actor 共同实现同步功能的时候&#xff0c;我们往往会看到如下使用场景&#xff1a; Actor A 必须在主线程上运行&#xff0c;Actor B可以在任意线程上运行&#xff0c;但需要适时的调用 Actor A 中的方法。 在这种情况下&#xff0c;我们会遇到如下代码&#…

从移动激光扫描数据中自动提取单棵树的双重生长方法

论文题目&#xff1a;A dual growing method for the automatic extraction of individual trees from mobile laser scanning data Abstract 在城市场景的杂乱点云中&#xff0c;街道树木与其他物体交织在一起&#xff0c;阻碍了对单个树木的自动提取。根据树木的一般构成&a…

React:安装配置使用scss

目录 前言&#xff1a; 1.暴露隐藏的webpack配置&#xff1b; 2.安装sass的相关包&#xff1b; 3.项目中新建一些scss文件&#xff1b; 4.在config文件夹中找到webpack.config.js文件&#xff0c;进行配置&#xff1b; 5.测试使用&#xff1b; 前言&#xff1a; 项目采用…

Python之Pandas的常用技能【写入数据】

1、背景&#xff1a; 最近在工作中遇到越来越多的的使用pandas或者python来处里写入操作&#xff0c;尤其是对excel文件或者csv文件的操作更是常见&#xff0c;这里将写入操作总结如下&#xff0c;方便记忆&#xff0c;也分享给大家&#xff0c;希望对阅读者能够有所帮助 2、…

nvdiffrec:Extracting Triangular 3D Models, Materials, and Lighting From Images

论文主页 https://nvlabs.github.io/nvdiffrec/git主页 https://github.com/NVlabs/nvdiffrec新闻报道 https://redian.news/wxnews/36324YuQiao0303 读后感 https://blog.csdn.net/qq_34342853/article/details/125622816b站演示效果视频 https://www.bilibili.com/video/BV1P…

8天获offer|祝贺信息技术老师获CSC资助赴意大利访学

I老师拟申报CSC青年骨干教师项目&#xff0c;指定欧洲学校&#xff0c;且要求半个月内获得邀请函。我们8天就取得了意大利帕多瓦大学的offer&#xff0c;研究方向完全相符&#xff0c;因而顺利通过了CSC审批。后经繁琐的手续&#xff0c;I老师最终获得签证&#xff0c;如期出国…

ABB机器人设置有效载荷的2种方法具体步骤(直接输入法+自动识别推算法2)

ABB机器人设置有效载荷的2种方法具体步骤(直接输入法+自动识别推算法2) 为什么要设置有效载荷Loaddata? 对于搬运应用的机器人只有设定正确的工具和载荷数据,机器人才能正确的工作; 对于搬运比较重的产品,或工具的重量也比较重,需要设置工具及搬运对象的重心和重量; …