当前位置: 首页 > 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教程

http://www.lryc.cn/news/451170.html

相关文章:

  • AJAX JSON 实例
  • java8:hutool:httputil.post读取配置项中的url
  • Springboot结合RabbitMQ
  • UNIAPP 动态菜单实现方法
  • windows C++-使用任务和 XML HTTP 请求进行连接(一)
  • HTB:Oopsie[WriteUP]
  • 【JAVA高级】如何使用Redis加锁和解锁(一)、Lua脚本执行原理及流程
  • 2024年使用宝塔面板轻松部署Java Web
  • 闯关训练一:Linux基础
  • 鸿蒙NEXT开发-ArkTS(基于最新api12稳定版)
  • laravel延迟队列 取消未支付超时订单订单
  • 解锁高效开发的秘密武器
  • 【CSS】兼容处理
  • C语言线程
  • 自闭症寄宿学校 vs. 日常教育:为孩子提供更多可能
  • RxSwift系列(二)操作符
  • Gin框架简易搭建(3)--Grom与数据库
  • JavaScript模块化-CommonJS规范和ESM规范
  • 解决银河麒麟V10中的apt Lock异常
  • windows11环境安装lua及luarocks(踩坑篇)
  • Glide基本用法及With方法源码解析
  • html中的文本标签(含标签的实现案例)
  • 通信协议感悟
  • IDEA几大常用AI插件
  • 51单片机学习第六课---B站UP主江协科技
  • sadTalker本地编译
  • 强化学习核心概念与公式总结
  • 基础算法--双指针【概念+图解+题解+解释】
  • 国产化系统/鸿蒙开发足浴店收银源码-收缩左侧———未来之窗行业应用跨平台架构
  • 如何从硬盘恢复丢失/删除的视频