第四章 react-redux,@reduxjs/toolkit依赖,学习

redux系列文章目录

第一章 简单学习redux,单个reducer

第二章 简单学习redux,多个reducer

第三章 redux和react-redux,@reduxjs/toolkit依赖结合使用

第五章 两张图告诉你redux常使用的api有哪些

前言

本章将使用react-redux,@reduxjs/toolkit依赖创建一个简单cout计数页面

准备工作

准备一个react框架的环境

bash 复制代码
npx create-react-app  react-redux-template

下载依赖

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

启动命令

bash 复制代码
npm start

准备目录文件,

页面:src/pages/count/index.js

redux的存放:src/redux/store.js和src/redux/counterReducer.js

详情代码

store.js

bash 复制代码
import { configureStore } from "@reduxjs/toolkit";
import countReducer from "./countReducer";
const store = configureStore({
  reducer: {
    counter: countReducer,
  },
})

export default store;

counterReducer.js

bash 复制代码
import { createSlice } from "@reduxjs/toolkit";

const countSlice = createSlice({
  name: "counter",
  //这里initialState一定到放对象object,不然报错
  initialState: {value: 0},
  reducers: {
    increment: (state) => {
        state.value +=1
    },
    decrement: (state) => {
        state.value-=1
    }
  },
}
)
export const {increment, decrement} = countSlice.actions
export default countSlice.reducer

count/index.js

bash 复制代码
import React from 'react'
import { useSelector, useDispatch } from 'react-redux'
import { increment, decrement } from '../../redux/countReducer'
export default function CountPage() {
    const count = useSelector(state => state.counter.value)
    const dispatch = useDispatch()

    return (
        <div>
            <br />
            <br />count:{count}
            <br />
            <button onClick={() => {
                dispatch(increment())
            }}>加+1</button>
            &nbsp;
            <button onClick={() => { dispatch(decrement()) }}>减-1</button>

        </div>
    )
}

src/index.js

bash 复制代码
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
// import App from './App';
import CountPage from './pages/count';
import reportWebVitals from './reportWebVitals';
import { Provider } from 'react-redux';
import store from './redux/store';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <Provider store={store}>
    <CountPage />
    </Provider>
  </React.StrictMode>
);

reportWebVitals();

提示:<Provider>很重要,引入store,这样整个应用都可以使用store相关hooks拿取数据

效果

react-redux存储状态

相关推荐
编程猪猪侠13 分钟前
Tailwind CSS 自定义工具类与主题配置指南
前端·css
qhd吴飞17 分钟前
mybatis 差异更新法
java·前端·mybatis
艾莉丝努力练剑31 分钟前
【LeetCode&数据结构】二叉树的应用(二)——二叉树的前序遍历问题、二叉树的中序遍历问题、二叉树的后序遍历问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
YGY Webgis糕手之路39 分钟前
OpenLayers 快速入门(九)Extent 介绍
前端·经验分享·笔记·vue·web
花月mmc40 分钟前
CanMV-K230 AI学习笔记系列
人工智能·笔记·学习
患得患失94941 分钟前
【前端】【vueDevTools】使用 vueDevTools 插件并修改默认打开编辑器
前端·编辑器
ReturnTrue86842 分钟前
Vue路由状态持久化方案,优雅实现记住表单历史搜索记录!
前端·vue.js
UncleKyrie1 小时前
一个浏览器插件帮你查看Figma设计稿代码图片和转码
前端
遂心_1 小时前
深入解析前后端分离中的 /api 设计:从路由到代理的完整指南
前端·javascript·api
你听得到111 小时前
Flutter - 手搓一个日历组件,集成单日选择、日期范围选择、国际化、农历和节气显示
前端·flutter·架构