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

【React】react项目中的redux使用

1. store目录结构设计

在这里插入图片描述

2. react组件中使用store中的数据——useSelector

在这里插入图片描述

3. react组件中修改store中的数据——useDispatch

在这里插入图片描述

4. 示例

  • react-basic\src\store\moduels\counterStore.js
import { createSlice } from '@reduxjs/toolkit'const counterStore = createSlice({name: 'counter',// 初始化stateinitialState: {count: 0,},// 修改状态的方法,支持直接修改reducers: {plus(state) {state.count++},minus(state) {state.count--}}
})const { plus, minus } = counterStore.actions
const reducer = counterStore.reducer// 按需导出
export { plus, minus }
// 默认导出
export default reducer
  • react-basic\src\store\index.js
import { configureStore } from "@reduxjs/toolkit";
import counterReducer from './moduels/counterStore'const store = configureStore({reducer: {counter: counterReducer}
})export default store
  • react-basic\src\index.js
// 项目的入口文件,从这里开始运行// react必要的核心包
import React from 'react';
import ReactDOM from 'react-dom/client';
import store from './store/index'
import { Provider } from 'react-redux'
// 项目的根组件
import App from './App';// 把根组件渲染到id为root的dom节点上
// react-basic\public\index.html
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<Provider store={store}><App /></Provider>
);
  • react-basic\src\App.js
import { useSelector, useDispatch } from 'react-redux'
import { plus, minus } from './store/moduels/counterStore';function App() {const { count } = useSelector(state => state.counter)const dispatch = useDispatch()return (<div className="App"><button onClick={()=>dispatch(plus())}>+1</button>{count}<button onClick={()=>dispatch(minus())}>-1</button></div>);
}export default App;

5. 提交action传参

在这里插入图片描述

  • react-basic\src\store\moduels\counterStore.js
import { createSlice } from '@reduxjs/toolkit'const counterStore = createSlice({name: 'counter',// 初始化stateinitialState: {count: 0,},// 修改状态的方法,支持直接修改reducers: {plus(state) {state.count++},minus(state) {state.count--},addToNum(state, actions) {state.count = actions.payload}}
})const { plus, minus, addToNum } = counterStore.actions
const reducer = counterStore.reducer// 按需导出
export { plus, minus, addToNum }
// 默认导出
export default reducer
  • react-basic\src\App.js
import { useSelector, useDispatch } from 'react-redux'
import { plus, minus, addToNum } from './store/moduels/counterStore';function App() {const { count } = useSelector(state => state.counter)const dispatch = useDispatch()return (<div className="App"><button onClick={()=>dispatch(plus())}>+1</button>{count}<button onClick={()=>dispatch(minus())}>-1</button><button onClick={() => dispatch(addToNum(10))}>add to 10</button><button onClick={() => dispatch(addToNum(20))}>add to 20</button></div>);
}export default App;

6. 参考

黑马程序员react教程

相关文章:

  • git初级使用学习(图文)
  • Java零工市场小程序如何改变自由职业者生活
  • android.bp cc_test
  • 【MySQL内置数据库】 mysql
  • HTTP 1.0 2.0 3.0详解
  • GO语言环境搭建和字符说明
  • Android studio配置AVD虚拟机
  • Unity实战案例全解析:RTS游戏的框选和阵型功能 总结
  • 关于Elastic Search与MySQL之间的数据同步
  • 如何利用ChatGPT开发一个盈利的AI写作助手网站
  • k8s集群搭建(保姆级教程以及遇到的各种问题解决)
  • CSDN 的 GIt 是没东西吗
  • 机器学习笔记
  • <<机器学习实战>>10-11节笔记:生成器与线性回归手动实现
  • C#和Python共享内存技术
  • Google 是如何开发 Web 框架的
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Android Volley源码解析
  • Android优雅地处理按钮重复点击
  • ES6 ...操作符
  • ES6之路之模块详解
  • httpie使用详解
  • java8 Stream Pipelines 浅析
  • java正则表式的使用
  • Js基础——数据类型之Null和Undefined
  • node 版本过低
  • SQLServer之索引简介
  • Vue 2.3、2.4 知识点小结
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 如何在GitHub上创建个人博客
  • 一道面试题引发的“血案”
  • 自动记录MySQL慢查询快照脚本
  • 走向全栈之MongoDB的使用
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • # Redis 入门到精通(七)-- redis 删除策略
  • #Lua:Lua调用C++生成的DLL库
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (3) cmake编译多个cpp文件
  • (39)STM32——FLASH闪存
  • (k8s)kubernetes 部署Promehteus学习之路
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (SERIES10)DM逻辑备份还原
  • (补充)IDEA项目结构
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (七)c52学习之旅-中断
  • (十八)SpringBoot之发送QQ邮件
  • (一)Dubbo快速入门、介绍、使用
  • (转)重识new
  • *p++,*(p++),*++p,(*p)++区别?
  • .Net 6.0 Windows平台如何判断当前电脑是否联网
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript