react 学习之react toolkit状态管理

这只是个简单的例子

首先这是store.ts
import { configureStore } from '@reduxjs/toolkit';
import { counterSlice } from './homeSlice';// configureStore 创建store
export const store = configureStore({reducer: {home: counterSlice.reducer},
});
counterSlice.ts
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
const initialState = {value: 0
}
export const counterSlice = createSlice({name: 'counter',initialState,reducers: {increment: (state) => {state.value += 1;},decrement: (state) => {state.value -= 1;},reset:()=>{return { value: 3}}},
});
//虽然tookit 提供了返回值的处理api但是我还是喜欢在这里处理,个人写法习惯
export const getInfo = createAsyncThunk('counter/getInfo',async (_, { dispatch }) => {const res = await new Promise(resolve => {setTimeout(() => {dispatch(counterSlice.actions.reset());resolve(2);}, 1000);});return null;}
);
// 这是组件的一些调用方法
import { useDispatch, useSelector } from "react-redux";
import { counterSlice } from "../store/homeSlice"
import { useEffect } from "react"
import { getInfo } from "../store/homeSlice";
import { useNavigate } from "react-router-dom";const Home = () => {let valueFromStore = useSelector((state:any) => state.home.value)const dispatch = useDispatch()const navigate = useNavigate()useEffect(() => {document.title = valueFromStore.toString();// 如果当这个值大于 5 的时候,我们就把这个值重置为 0if (valueFromStore > 5 || valueFromStore < 0) {dispatch(counterSlice.actions.reset())}}, [dispatch, valueFromStore]);// 调用counterSlice中的getInfo方法useEffect(() => {dispatch(getInfo() as any);}, [dispatch]); const goToAbout = () => {navigate('/about');// navigate(-1); 返回上一页};return (<><div><button onClick={()=>dispatch(counterSlice.actions.decrement())}>加一</button><button onClick={()=>dispatch(counterSlice.actions.increment())}>减一</button><div>{valueFromStore}</div><button onClick={goToAbout}>去About页面</button></div></>)
}
export default Home
// 这是store的挂载部分,入口文件
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { Provider } from 'react-redux'
import { BrowserRouter } from "react-router-dom";
import { store } from './store/store'const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement
);
root.render(<React.StrictMode><Provider store={store}><BrowserRouter><App /></BrowserRouter></Provider></React.StrictMode>
);

好了,就这么多,每天学习一点点

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

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

相关文章

win11 ssh连接ubuntu 出现 command not found: cvs

sudo apt-get install openssh-client sudo apt-get install openssh-server ps -e | grep ssh sudo /etc/init.d/ssh start 仍然报错; command not found: cvs 解决办法为&#xff1a;修改/etc/ssh/sshd_config 文件 修改&#xff1a; 58 PasswordAuthentication yes 5…

【UE】剔除环境颜色

效果 步骤 1. 新建一个空白项目&#xff0c;勾选光线追踪选项 2. 新建一个Basic关卡 3. 添加初学者内容包到内容浏览器 4. 新建一个材质“M_Red” 打开“M_Red”&#xff0c;设置基础颜色为红色 在场景中随便布置一些物品&#xff0c;然后给其中的一个球体设置材质为“M_Red”…

SSH远程连接及报错解决

hostA免密登录hostB hostA ssh-keygen -t rsa 一直回车&#xff0c;再远程拷贝至hostB scp /root/.ssh/id_rsa.pub root:192.168.IP.IP:/root/.ssh/authorized_keys 这个时候可能会报错&#xff1a; scp /root/.ssh/authorized_keys: No such file or directory在hostB上…

Oracle--索引

文章目录 一、索引是什么?二、索引的原理三、索引的特征四、创建索引的方式五、怎么确认索引六、案列七、复合索引 一、索引是什么? 索引&#xff08;INDEX&#xff09;是数据库中用于提高查询效率的一种数据结构。它可以加速数据库表的数据查找、过滤和排序等操作。索引是一…

【python笔记】与网络编程相关的知识总结

前言 菜某的笔记总结 osi七层模型 物理层 打包以下的数据&#xff0c;转化为二进制 数据链路层 双方Mac地址 网络层 双方IP地址 传输层 指定双方的端口 会话层 负责与目标建立断开连接 表示层 对数据加密解密&#xff0c;编码 应用层 规定数据的协议格式&#xff08;get&…

python 协程

1. 协程 协程&#xff0c;又称微线程&#xff0c;纤程。英文名Coroutine。 https://www.cnblogs.com/coder-qi/p/10163416.html 协程不是计算机提供的&#xff0c;是人为创造的上下文切换技术&#xff0c;也可以被称为微线程。简而言之 其实就是在一个线程中实现代码块相互切…

面向对象设计模式入门知识

设计模式 面向对象设计原则 依赖倒置原则&#xff08;DIP&#xff09; 高层模板(稳定)不应该依赖于低层模板(变化)&#xff0c; 二者都应该依赖抽象(稳定)抽象(稳定)不应该依赖于实现细节(变化)&#xff0c;实现细节应该依赖抽象(稳定) 开放封闭原则(OCP) 对扩展开放&…

Lesson 08 string类 (中)

C&#xff1a;渴望力量吗&#xff0c;少年&#xff1f; 文章目录 二、string类的介绍与使用2. 使用&#xff08;5&#xff09;string类对象的修改操作 三、拷贝1. 引入2. 浅拷贝3. 深拷贝 总结 二、string类的介绍与使用 2. 使用 &#xff08;5&#xff09;string类对象的修改…

2023年下半年计算机等级考试—信息安全三级部分真题

1.前言 刚参加完2023年下半年计算机等级考试—信息安全三级。笔者凭借记忆将考到的题进行如下汇总,并整理正确答案。仅供各位参考! 2.题型及分值 上机考试,考试时长120分钟,满分100分。 选择题 60分 50道题,每道题1.2分 填空题 20分 20道题 每道题1分 综合应用题 2…

Scrum敏捷开发流程及支撑工具

Scrum是一种敏捷开发框架&#xff0c;用于管理复杂的项目。以下这些步骤构成了Scrum敏捷开发流程的核心。通过不断迭代、灵活应对变化和持续反馈&#xff0c;Scrum框架帮助团队快速交付高质量的产品。 以下是Scrum敏捷开发流程的基本步骤&#xff1a; 产品Backlog创建&#xf…

基于协同过滤算法的美食推荐系统研究与实现

点我完整下载&#xff1a;基于协同过滤算法的美食推荐系统研究与实现 基于协同过滤算法的美食推荐系统研究与实现 "Research and Implementation of a Food Recommendation System based on Collaborative Filtering Algorithm" 目录 目录 2 摘要 3 关键词 3 第一章 …

Windows系统Powershell自带的Test-NetConnection命令测试网络情况

Test-Connection it-000571,192.168.20.205 //测试ip连通性&#xff0c;类似ping&#xff0c;用,号可以同时测试多个IP Test-NetConnection -Computername it-000571 -traceRoute //追踪域名it-000571的路由 Test-NetConnection 192.168.75.216 -port 3389 //…

微服务--06--Sentinel 限流、熔断

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.微服务保护雪崩问题服务保护方案1.1.请求限流1.2.线程隔离1.3.服务熔断 2.Sentinel2.1.介绍和安装官方网站&#xff1a;[https://sentinelguard.io/zh-cn/](https…

打造高效项目团队,离不开有效的反馈机制

为了确保项目高效交付&#xff0c;项目经理需要在管理过程中及时发现问题并解决&#xff0c;所以80%的时间都在进行沟通以及各种项目汇报。但项目经理往往会陷入低频沟通、无意义汇报的困局&#xff0c;进而导致四处救火、项目各种延误、团队的工作效率低下。例如&#xff1a; …

Leetcode2336 无限集中的最小数字

题目&#xff1a; 现有一个包含所有正整数的集合 [1, 2, 3, 4, 5, ...] 。 实现 SmallestInfiniteSet 类&#xff1a; SmallestInfiniteSet() 初始化 SmallestInfiniteSet 对象以包含 所有 正整数。int popSmallest() 移除 并返回该无限集中的最小整数。void addBack(int nu…

VERAS:AI驱动的Revit可视化渲染插件

Veras 是一款基于生成式AI 的可视化工具&#xff0c;可以使用自然语言生成3D渲染效果&#xff0c;兼容Revit、Rhino 和 SketchUp。Veras for Revit工具使用 Revit 模型内部的 3D 视图。 NSDT工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编…

ES6模板字符串的基本使用

ES6新增了模板字符串&#xff0c;让我们拼接字符串时更方便 注意:切记使用反引号作为字符串的定界符分隔的字面量 1.拼接 在我们模板字符串出现之前&#xff0c;我们想要拼接字符串是比较麻烦的 const name "杰克";const age 18;// 以前的拼接字符串console.log(…

如何把ipa文件(iOS安装包)安装到iPhone手机上? 附方法汇总

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 技术细节 目录 Appuploader 常见错误及解决方法 苹果APP安装包ipa如何安装在手机上&#xff1f;很多人不知道怎么把ipa文件安装到手机上&#xff0c;这里就整理了苹果APP安装到iOS设备上的方式&#xff0c;仅供参考 苹…

说说你对slot的理解?slot使用场景有哪些?

面试官&#xff1a;说说你对slot的理解&#xff1f;slot使用场景有哪些&#xff1f; 一、slot是什么 在HTML中 slot 元素 &#xff0c;作为 Web Components 技术套件的一部分&#xff0c;是Web组件内的一个占位符 该占位符可以在后期使用自己的标记语言填充 举个栗子 <t…

安科瑞智能照明系统在福建二建大厦项目上的应用

【摘要】&#xff1a;智能化已经成为当今建筑发展的主流技术、涵盖从空调系统、消防系统到安全防范系统以及完善的计算机网络和通信系统。但是长期以来、智能照明在国内一直被忽视、大多数建筑物仍然沿用传统的照明控制方式、部分智能大厦采用楼宇自控&#xff08;BA&#xff0…