React学习笔记08

ops/2025/3/4 12:12:41/

一、什么是Redux

Redux是React中最常用的集中状态管理工具,类似于Vue中的Pinia(Vuex),可以独立于框架运行,作用是通过集中管理的方式管理应用的状态

二、Redux快速体验

手搓一个Redux:

1、定义一个reducer函数(根据当前想要做的修改返回一个新的状态)

2、使用createStore方法传入reducer函数生成一个store实例对象

3、使用store实例的subscribe方法订阅数据的变化(数据一旦发生变化,可以得到通知)

4、使用store实例dispatch方法提交action对象触发数据变化(告诉reduce你想怎么改数据)

5、使用store实例的getState方法获取最新的状态数据更新到视图中

// 1.定义reducer函数
// 作用:根据不同的action对象,返回不同的新的state
// state:管理的数据初始状态
// action:对象type标记当前想要做什么样的修改
const Redux = useReducer()
function reducer(state = { count: 0 }, action) {// 数据不可变:基于原始状态生成一个新的状态if (action.type === 'INCREMENT') {return { count: state.count + 1 }}if (action.type === 'DECREMENT') {return { count: state.count - 1 }}return state
}
// 2.使用reducer函数生成store实例
const store = Redux.createStore(reducer)// 3.通过store实例的subscribe订阅数据变化
store.subscribe(() => {console.log('state变化了', store.getState());// 5.通过store实例的getState方法document.getElementById('count').innerText = store.getState().count
})// 4.通过store实例的dispatch函数提交action更改状态
const inBtn = document.getElementById('increment')
// 增
inBtn.addEventListener('click', () => {store.dispatch({type: 'INCREMENT'})
})const dBtn = document.getElementById('decrement')
// 减
dBtn.addEventListener('click', () => {store.dispatch({type: 'DECREMENT'})
})

三、Redux管理数据流程梳理

为了职责清晰,数据流向明确,Redux把整个数据修改的流程分成了三个核心概念,分别是state、action和reducer

1.state:一个对象,用来存放我们管理的数据状态

2.action:一个对象,用来描述你想怎么改数据

3.reducer:一个函数,用来根据action的描述生成一个新的state

至此Redux快速上手介绍完了,敬请关注下一章Redux与React


http://www.ppmy.cn/ops/163037.html

相关文章

JavaWeb后端基础(4)

这一篇就开始是做一个项目了,在项目里学习,我主要记录在学习过程中遇到的问题,以及一些知识点 Restful风格 一种软件架构风格 在REST风格的URL中,通过四种请求方式,来操作数据的增删改查。 GET : 查询 …

附近商户和用户签到

附近商户 当点击美食按钮时,发送请求: http://127.0.0.1:8080/api/shop/of/type?&typeId1&current1&x120.149993&y30.334229 其中,typeId1表示美食类型,current1表示页码为1,x120.149993&y30.33…

element UI => element Plus 差异化整理

注:文章由deepSeek生成; 以下是 Element UI 和 Element Plus 中 有变化的组件属性差异 的详细对比。这些变化主要集中在 Vue 3 的适配、API 优化以及新特性的引入。 1. Button 组件 (el-button) 属性名Element UIElement Plus差异说明iconicon"el-…

跟据spring boot版本,查看对应的tomcat,并查看可支持的tomcat的版本范围

一 查看springboot自带的tomcat版本: 可直接在项目中找到Maven Dependencies中找到tomcat版本 二、查看SpringBoot内置tomcat版本的支持范围 我这边是跟据maven仓库查看的 首先跟据链接打开maven仓库:https://mvnrepository.com/ 然后搜索&#xff1a…

使用DeepSeek+KIMI生成高质量PPT

一、使用DeepSeek DeepSeek官网:DeepSeek 点击“开始对话”,进入交互页面。 在上图中,输入问题,即可获取AI生成的结果。 基础模型(V3):通用模型(2024.12),高…

本地部署 DeepSeek:从 Ollama 配置到 Spring Boot 集成

前言 随着人工智能技术的迅猛发展,越来越多的开发者希望在本地环境中部署和调用 AI 模型,以满足特定的业务需求。本文将详细介绍如何在本地环境中使用 Ollama 配置 DeepSeek 模型,并在 IntelliJ IDEA 中创建一个 Spring Boot 项目来调用该模型…

8295智能座舱弹窗点击问题,点击window之外的区域,window不消失的问题。touchableRegion的问题分析(android 13)

1.问题描述 在项目开发过程中,遇到input的问题。用户点击status bar的Wifi图标之后,会弹出wifi列表的window,而点击这个window之外的区域,wifi列表的窗口不会消失的问题。 2. 问题分析定位 分析触摸问题,必不可少的会…

攻防世界WEB(新手模式)18-easyphp

打开题目,直接开始代码审计 条件1:$a 必须存在,且 intval($a) 必须大于 6000000,同时 strlen($a) 必须小于等于 3。 这意味着 $a 必须是一个字符串,且它的整数值大于 6000000,但字符串长度不能超过 3。这看…