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

【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',
    // 初始化state
    initialState: {
        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',
    // 初始化state
    initialState: {
        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.kler.cn/news/335277.html

相关文章:

  • 【开源开放体系总结】
  • 【自然语言处理】(1) --语言转换方法
  • 刷题记录(好题)
  • 开发指南065-缩减包
  • 移动WSL到其他盘
  • MATLAB中正则表达式的全面应用与实践
  • 如何使用WPS软件里的AI工具?
  • 简单部署vue+springboot项目
  • 汽车革命下半场AI先锋:广汽为新“智”汽车装配大模型“底盘”
  • 计算机网络:三次握手和四次挥手详解
  • 使用NumPy进行线性代数的快速指南
  • Linux自动化构建工具Make/Makefile
  • 基于yolov8深度学习的120种犬类检测与识别系统python源码+onnx模型+评估指标曲线+精美GUI界面目标检测狗类检测犬类识别系统
  • 三维模型点云化工具V1.0使用介绍:将三维模型进行点云化生成
  • 笔记整理—linux进程部分(6)进程间通信、alarm和pause
  • 使用Pytorch构建自定义层并在模型中使用
  • 架构设计笔记-5-软件工程基础知识-3
  • 【Springdoc-openapi】基于SpringBoot3.3.x版本③集成Springdoc
  • windows C++-创建基于代理的应用程序(上)
  • 数据和算力共享