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 的使用效果

相关推荐
纪元A梦9 分钟前
华为OD机试真题——绘图机器(2025A卷:100分)Java/python/JavaScript/C++/C/GO最佳实现
java·javascript·c++·python·华为od·go·华为od机试题
会飞的鱼先生12 分钟前
Vue3的内置组件 -实现过渡动画 TransitionGroup
前端·javascript·vue.js·vue
晓得迷路了12 分钟前
10 分钟开发一个 Chrome 插件?Trae 让你轻松实现!
前端·javascript·trae
秋天的一阵风17 分钟前
Vue3探秘系列— 路由:vue-router的实现原理(十六-上)
前端·vue.js·面试
秋天的一阵风18 分钟前
Vue3探秘系列— 路由:vue-router的实现原理(十六-下)
前端·vue.js·面试
海底火旺38 分钟前
JavaScript中的Object方法完全指南:从基础到高级应用
前端·javascript·面试
海底火旺39 分钟前
JavaScript中的Symbol:解锁对象属性的新维度
前端·javascript·面试
天天扭码39 分钟前
一文吃透 ES6新特性——解构语法
前端·javascript·面试
Kagerou40 分钟前
组件测试
前端
数据智能老司机43 分钟前
React关键概念——理解React组件与JSX
react native·react.js·前端框架