react redux的学习,单个reducer

redux系列文章目录

一 什么redux?

redux是一个专门用于做状态管理的JS库(不是react插件库)。它可以用在react, angular, vue等项目中, 但基本与react配合使用。集中式管理react应用中多个组件共享的状

简单来说,就是存储页面的状态值的一个库,需要的时候取出来就行

二 redux的工作原理

Action‌

Action是一个描述发生了什么的普通JavaScript对象。当用户在界面上执行某个操作时(如点击按钮),会派发一个action。Action必须有一个type属性来标识其类型。

Reducer‌

Reducer是一个纯函数,接收先前的状态和一个action,返回新的状态。Redux要求所有的状态更新逻辑都写在reducer中,确保状态的更新是可预测和确定的。

Store‌

Store是将所有状态保存为一个对象树(state tree)的地方。它提供几个方法,如dispatch(action)来触发action,getState()来获取当前状态,subscribe(listener)来注册监听器等。

三 使用redux

准备工作

1.一个react项目环境下,下载依赖

bash 复制代码
npm i redux

2.新增src/redux文件夹;

新增 src/redux/store.js文件和src/redux/reducers.js文件;

新增src/pages/counter/index.js文件

代码

src/redux/reducers.js文件

bash 复制代码
function counterReducer(state = 0, action) {
    switch (action.type) {
        case 'INCREMENT':
            return state + 1;
        case 'DECREMENT':
            return state - 1;
        default:
            return state;
    }
}   

export default counterReducer;

src/redux/store.js文件

bash 复制代码
import {createStore} from 'redux';
import counterReducer from './reducer'
let store = createStore(counterReducer);

export default store

src/pages/counter.js文件

bash 复制代码
import React, { useState } from 'react'
import store from '../../redux/store'
export default function Count() {
    const [count, setCount] = useState(0)
    store.subscribe(() => {
        console.log("监听其变化----", store.getState())
        setCount(store.getState())
    })
    return (
        <div>
            当前count:{count}
            <br />
            <button onClick={() => {
                store.dispatch({ type: 'INCREMENT' })
            }}>新增count</button>
            &nbsp;
            <button onClick={() => {
                store.dispatch({ type: 'DECREMENT' })
            }}>减少count</button>
        </div>
    )
}

效果

redux 的使用效果

相关推荐
闲猫2 小时前
Spring AI 对接Deepseek ChatModel 聊天对话
java·前端·spring
自信的未来3 小时前
JSON 工具|Web Worker 工程化打包 + 语法自动修复 + 多语言代码生成实战
java·前端·json
SRET4 小时前
Mineradio 沙盒隔离安装完全指南 | 一键安全运行 Electron 应用!!!
javascript·经验分享·安全·electron·aigc·音视频·ai编程
全栈前端老曹4 小时前
【MongoDB】安全与权限管理 —— 用户认证、角色权限、SSL 加密
前端·javascript·数据库·安全·mongodb·nosql·ssl
zhangxingchao5 小时前
AI大模型核心八:从 Agent Skill、长文档 RAG 到知识库更新与训练策略
前端·人工智能·后端
zhangxingchao5 小时前
AI大模型核心七:从 Workflow、RAG、记忆治理到幂等性
前端·人工智能·后端
gyx_这个杀手不太冷静6 小时前
Agent开发进阶指南(第 1 章):AI Agent 到底是什么?
前端·agent·ai编程
小小小小宇6 小时前
模型相关知识
前端
小小小小宇6 小时前
模型相关知识二
前端
IT_陈寒6 小时前
Python装饰器竟然偷偷改了函数名?这个坑我爬了三天
前端·人工智能·后端