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

相关推荐
雪芽蓝域zzs9 分钟前
新建前端pnpm(vue js ) 仿若依项目(一)
前端·javascript·vue.js
vipbic10 分钟前
网站升级了,我却有点舍不得
前端·vue.js·后端
IT_陈寒10 分钟前
Java Stream并行处理让我数据库崩了两次
前端·人工智能·后端
恋猫de小郭10 分钟前
Flutter 3.47 首坑,analysis_options 问题连环回归
android·前端·flutter
kaixin_learn_qt_ing28 分钟前
Electron程序---初体验
javascript·electron
星夜夏空9931 分钟前
网络编程(5)—— Reactor实现(v1)
服务器·javascript·网络
YWL31 分钟前
OpenLayers测距测面:完整测量工具
前端·javascript·vue.js·信息可视化·openlayers
zhanghaha131440 分钟前
HTML系列教程:2_HTML 编辑器(零基础超详细讲解
前端·编辑器·html
半旧51844 分钟前
【Java Web02】WEB服务器内部实现技术揭秘
java·服务器·前端
拿本唠嗑AI研究1 小时前
现代前端架构爬虫指南:从静态页面到 React/Vue 单页应用
前端·爬虫·架构