当前位置: 首页 > 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.mrgr.cn/news/38261.html

相关文章:

  • 基于SpringBoot+Vue的高校实习管理系统
  • 【机器学习】ID3、C4.5、CART 算法
  • Linux oracle数据库静默安装
  • 宝塔frp配置
  • 知识付费APP开发指南:基于在线教育系统源码的技术详解
  • 从零开始手写STL库:Unordered_Map
  • SpringBoot教程(安装篇) | Docker Desktop的安装(Windows下的Docker环境)
  • C++入门(2)--引用
  • FreeRTOS 内存管理源码解析
  • 使用VBA快速生成Excel工作表非连续列图片快照
  • 网页篡改防御方法
  • element-plus中el-table固定列fixed失效问题
  • 在LLMs模型中发现人类的记忆特征
  • nodejs 016: javascript语法——解构赋值({ a, b, c } = {})=>{console.log(“Hello“);}
  • linux编辑文件保存退出的实操讲解
  • 基于SpringCloud的微服务架构下安全开发运维准则
  • 微服务Redis解析部署使用全流程
  • Meta Sapiens 人体AI模型
  • 【设计模式】精通高级行为模式:揭秘状态、中介者及其它模式的深层机制
  • 【宝藏妙招,轻松拿捏!】如何防止U盘资料被复制?U盘文件防拷贝的五种措施!