Redux在React中的使用

Redux在React中的使用

1.构建方式

采用reduxjs/toolkit +react-redux 的方式

安装方式

bash 复制代码
npm install @reduxjs/toolkit react-redux

2.使用

①创建目录

创建store文件夹,然后创建index和对应的模块,如上图所示

②编写counterStore.js

文章以counterStore命名,名字可自行取

javascript 复制代码
import {createSlice} from '@reduxjs/toolkit'
const counterStore=createSlice({
    name:'counter',
    //初始化状态数据
    initialState:{
        count:0
    },
    reducers:{
        increment(state){
            state.count++
        },
        decrement(state){
            state.count--
        },
        setCountData(state,action){
            state.count=action.payload
        }
    }
})
//解构出创建action对象的函数
const {increment,decrement,setCountData}=counterStore.actions
//获取reducer函数
const counterReducer=counterStore.reducer
export {increment,decrement,setCountData}
export default counterReducer

③编写index.js

javascript 复制代码
import {configureStore} from "@reduxjs/toolkit"
import counterReducer from "./modules/counterStore";

//创建根store组合子模块
const store=configureStore({
    reducer:{
        counter:counterReducer
    }
})
export default store

④在根组件中导入

使用react-redux中Provider进行导入

javascript 复制代码
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import store from "./store";
import {Provider} from "react-redux";

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
    <Provider store={store}>
        <App />
    </Provider>
);

⑤在组件中使用

使用useSelector获取store中的数据

javascript 复制代码
const ComponentDemo=()=>{
    const {count}=useSelector(state => state.counter)
    return(
        <div>
            {count}
        </div>
    )
}

export default ComponentDemo

使用useDispatch获取dispatch方法,提交对应的方法改变state的值

javascript 复制代码
const GrandSon=()=>{
    const dispatch=useDispatch()
    return(
        <div onClick={()=>{dispatch(decrement())}}>
            我是孙子组件
        </div>
    )
}
相关推荐
cos7 小时前
React RCE 漏洞影响自建 Umami 服务 —— 记 CVE-2025-55182
前端·安全·react.js
奋斗猿8 小时前
前端实测:RSC不是银弹,但它真的重构了我的技术栈
前端·react.js
HexCIer8 小时前
CVE-2025-55182 React Server Components "React2Shell" 深度调查与全链路响应报告
react.js·next.js
爱看书的小沐9 小时前
【小沐学WebGIS】基于Cesium.JS绘制雷达波束/几何体/传感器Sensor(Cesium / vue / react )
javascript·vue.js·react.js·雷达·cesium·传感器·波束
用户81686947472510 小时前
React 如何用 MessageChannel 模拟 requestIdleCallback
前端·react.js
ZZJsky12310 小时前
关于 React 进化历史 (上)
react.js
随风一样自由10 小时前
React中实现iframe嵌套登录页面:跨域与状态同步解决方案详解
前端·react.js·前端框架·跨域
一个处女座的程序猿O(∩_∩)O10 小时前
React Native vs React Web:深度对比与架构解析
前端·react native·react.js
@大迁世界10 小时前
紧急:React 19 和 Next.js 的 React 服务器组件存在关键漏洞
服务器·前端·javascript·react.js·前端框架
一个处女座的程序猿O(∩_∩)O11 小时前
React Native 全面解析:跨平台移动开发的利器
javascript·react native·react.js