react状态管理工具reduxjs/toolkit用法

安装 npm install @reduxjs/toolkit

1.创建一个名为counterSlice.js的文件,用于处理计数器模块的状态:

javascript 复制代码
import { createSlice } from '@reduxjs/toolkit';

const counterSlice = createSlice({
  name: 'counter',
  initialState: {
    value: 0,
  },
  reducers: {
    increment(state) {
      state.value += 1;
    },
    decrement(state) {
      state.value -= 1;
    },
  },
});

export const { increment, decrement } = counterSlice.actions;
export default counterSlice.reducer;

2.创建一个名为userSlice.js的文件,用于处理用户信息模块的状态:

javascript 复制代码
import { createSlice } from '@reduxjs/toolkit';

const userSlice = createSlice({
  name: 'user',
  initialState: {
    name: '',
    age: null,
  },
  reducers: {
    setName(state, action) {
      state.name = action.payload;
    },
    setAge(state, action) {
      state.age = action.payload;
    },
  },
});

export const { setName, setAge } = userSlice.actions;
export default userSlice.reducer;

3.创建一个Redux store并将这些模块整合起来。创建一个名为store.js的文件:

javascript 复制代码
import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterSlice';
import userReducer from './userSlice';

const store = configureStore({
  reducer: {
    counter: counterReducer,
    user: userReducer,
  },
});

export default store;

4.在你的应用程序的入口处,将store与React应用程序进行连接。创建一个名为App.js的文件:

javascript 复制代码
import React from 'react';
import { Provider } from 'react-redux';
import store from './store';
import Counter from './Counter';
import User from './User';

function App() {
  return (
    <Provider store={store}>
      <div>
        <Counter />
        <User />
      </div>
    </Provider>
  );
}

export default App;

在组件Counter.js中使用

javascript 复制代码
import { useDispatch,useSelector } from 'react-redux';
import {increment} from '../store/reducer/counterSlice'
export default function Counter() {
     const value= useSelector(state=>state.counter.value);
     const dispatch = ();
  const changeValue = ()=>{
        dispatch(increment())
    }
  return (
    <div>
        {value}
        <button onClick={changeValue}>修改value</button>
    </div>
  )
}
相关推荐
To_OC4 小时前
LC 35 搜索插入位置:二分查找谁都会,边界条件谁写谁懵
javascript·算法·leetcode
码哥DFS4 小时前
二叉树的直径
开发语言·javascript·算法
烬羽5 小时前
上来就用 useState?你大概率用错了——useRef 的三种正确打开方式
react.js·前端框架·全栈
光影少年6 小时前
RN的Fabric 渲染流程
运维·前端·javascript·react native·react.js·fabric
烬羽6 小时前
《React Router 受保护路由的 3 个坑,第 2 个 90% 的人都踩过》
react.js·性能优化·全栈
__zRainy__7 小时前
React开始:直接在网站中使用React.js
前端·react.js·前端框架
用户938515635078 小时前
React Router 进阶:路由守卫、登录鉴权与状态传递
前端·javascript·全栈
kyriewen8 小时前
我重写了自己用了两年的防抖节流Hook——发现里面藏着3个隐藏bug
前端·javascript·面试
漂流瓶jz8 小时前
Webpack开发环境:观察模式/webpack-dev-server/HMR热更新
前端·javascript·webpack
小爬的老粉丝9 小时前
Vue 3 文件预览生产排障:Worker/WASM 404、鉴权 Blob 与子路径
javascript·vue.js·wasm