首页 > 其他分享 >ReactRedux工具包reduxjs/toolkit的使用

ReactRedux工具包reduxjs/toolkit的使用

时间:2023-05-10 17:07:50浏览次数:38  
标签:counter reduxjs reducer ReactRedux toolkit state import const store

首先可以先看一下Redux如何工作

ReactRedux工具包reduxjs/toolkit的使用_redux

store 负责存储数据,相当于仓库,action负责dispatch派发数据,reducer负责接收处理数据然后交给store(个人理解 可能有些偏差 欢迎交流斧正)

传统redux写法(旧)

//reducer
const counterReducer = (state = { counter: 0 }, action) => {

    if (action.type === "increment") {

        return {

            counter: state.counter + 1,

        };

    }

    if (action.type === "increase") {

        return {

            counter: state.counter + action.amount,

        };

    }

    if (action.type === "decrement") {

        return {

            counter: state.counter - 1,

        };

    }

    return state;

}
//连接到store
const store = createStore(counterReducer)

使用reduxjs/toolkit(新)

新的写法主要体现在reducer的简化上

//reducer
const countSlice= createSlice(

    {

        name: "counter",

        initialState: { counter: 0 },

        reducers: {

            increment(state) {

                state.counter++;//在redux中这种写法不被允许 在toolkit中被允许

            },

            decrement(state) {

                state.counter--;

            },

            increase(state, action) {

                state.counter += action.payload;

            },

  

        }

    }

)
  
//连接到store
const store = configureStore(

    {

        reducer: { counter: countSlice.reducer}//作为一个对象处理多reducer

    }

    )

简单使用步骤

  1. 创建reducer文件
import { createSlice } from '@reduxjs/toolkit';
1. 创建切片
const uiSlice = createSlice({
  name: 'ui',
  initialState: { cartIsVisible: false },
  reducers: {
    toggle(state) {
      state.cartIsVisible = !state.cartIsVisible;
    }
  }
});
3、将actions导出
export const uiActions = uiSlice.actions;
2、将切片导出
export default uiSlice;
  1. 在store中引入reducer
import { configureStore } from '@reduxjs/toolkit';

import uiSlice from './ui-slice';
import cartSlice from './cart-slice';
4 在store中引入切片
const store = configureStore({
  reducer: { ui: uiSlice.reducer, cart: cartSlice.reducer },
});

export default store;
  1. 在index.js中包裹根组件
import ReactDOM from 'react-dom/client';
import { Provider } from 'react-redux';
import store from './store/index';
import './index.css';
import App from './App';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <Provider store={store}>
    <App />
  </Provider>
);
  1. 在组件中使用dispatch派发actions
import { useDispatch} from 'react-redux';
import { uiActions } from '../../store/ui-slice';
const dispatch = useDispatch();
const toggleCartHandler = () => {
dispatch(uiActions.toggle()); //5toggle 1步骤中reducer的action之一

};
  1. 使用useSelecter接收数据
import { useSelector } from 'react-redux';
const Cart = (props) => {
const cartItems = useSelector((state) => state.cart.items);

标签:counter,reduxjs,reducer,ReactRedux,toolkit,state,import,const,store
From: https://blog.51cto.com/u_16106928/6262734

相关文章

  • 第三节:Redux Toolkit 使用详解
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • rknn_toolkit-1.6.1-cp36安装(Centos:rknn_toolkit-1.6.1-cp36-cp36m-linux_x86_64.whl)
    ---------start添加用户----------#suroot#adduserxu#passwdxu#chmod-vu+w/etc/sudoers#vim/etc/sudoers在这一行rootALL=(ALL)ALL下新增#xuALL=(ALL)ALL#addbyjiangshanwithhands#chmod-vu-w/etc/sudoers退出root用户#exit----......
  • React redux toolkit: Uncaught Error:[Immer] An immer producer returned a new...
    React在写一个购物车的reduxtoolkit时遇到了问题。核心代码如下:import{createSlice}from"@reduxjs/toolkit";constcartSlice=createSlice({name:'cart',initialState:{cartItems:[],cartItemCount:0},reducers:{......
  • percona-toolkit安装
    ########################yum-yinstallperl-ExtUtils-CBuilderyum-yinstallperl-ExtUtils-MakeMakeryum-yinstallperl-DBD-MySQLtar-xzvfpercona-toolkit-3.5.2_x86_64.tar.gzcdpercona-toolkit-3.5.2perlMakefile.PLmakemakeinstall#默认安装......
  • CommunityToolkit.Mvvm系列文章导航
    包 CommunityToolkit.Mvvm (又名MVVM工具包,以前名为 Microsoft.Toolkit.Mvvm)是一个现代、快速且模块化的MVVM库。它是.NET社区工具包的一部分,围绕以下原则构建:平台和运行时独立 - .NETStandard2.0、 .NETStandard2.1 和 .NET6......
  • percona-toolkit工具:使用pt-table-checksum检查MySQL主从库的差异
    环境介绍CentOS7.6MySQL5.7PerconaToolkit3.4.0 下载并安装PerconaToolkit从WEB端下载https://www.percona.com/downloads或者通过wget下载[root]#wgethttps://downloads.percona.com/downloads/percona-toolkit/3.5.2/binary/redhat/7/x86_64/percona-toolkit-3.......
  • 《Ubuntu安装rknn toolkit》
    1.Ubuntu安装rknntoolkitUbuntu版本是18.04,最好是这个版本,其他版本安静环境的时候会出现版本不匹配问题下载安装anacondawgethttps://mirrors.bfsu.edu.cn/anaconda/archive/Anaconda3-2022.05-Linux-x86_64.shbashAnaconda3-2022.05-Linux-x86_64.sh安装过程中......
  • percona-toolkit安装
    ########################yum-yinstallperl-ExtUtils-CBuilderyum-yinstallperl-ExtUtils-MakeMakeryum-yinstallperl-DBD-MySQLtar-xzvfpercona-toolkit-3.5.2_x86_64.tar.gzcdpercona-toolkit-3.5.2perlMakefile.PLmakemakeinstall#默认......
  • CliToolkit 工具
    目标&背景在游戏开发过程中,通常我们会为了更好的测试、校验逻辑正确性等,开发很多工具,最常见的就是GM1指令,以及一些为运营同学开发的运营工具,如:发送邮件,开启活动等等这样我们就可以将工具分为两大类游戏内建GM指令部分工具可以直接丢进UnityEditor开发运营工具(We......
  • CommunityToolkit.Mvvm8.1 viewmodel使用-旧式写法(2)
     本系列文章导航https://www.cnblogs.com/aierong/p/17300066.htmlhttps://github.com/aierong/WpfDemo(自我Demo地址)  0.说明CommunityToolkit.Mvvm8.1有一个重大更新的功能:源生成器功能,它极大简化我们的mvvm代码但是本篇先总结一下原写法,下篇再总结源生成器......