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项目环境下,下载依赖

npm i redux

2.新增src/redux文件夹;
新增 src/redux/store.js文件和src/redux/reducers.js文件;
新增src/pages/counter/index.js文件

代码

src/redux/reducers.js文件

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文件

import {createStore} from 'redux';
import counterReducer from './reducer'
let store = createStore(counterReducer);export default store

src/pages/counter.js文件

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCI与PCIe接口的通信架构是主从模式吗?

PCI&#xff08;Peripheral Component Interconnect&#xff09;总线在通信架构上本质是主从模式&#xff0c;但其具体实现和角色分配在不同版本&#xff08;如传统PCI与PCI Express&#xff09;中存在差异。以下是详细分析&#xff1a; 传统PCI总线的主从模式 (1) 基本架构 主…

java项目挂机自动重启操作指南

前段时间有个伙伴问我&#xff0c;java项目挂机怎么自动重启。。。。。。今天就写一个 .sh脚本来实现应用挂机的自动重启功能 #!/bin/bash # 查询mita的进程个数 countps -ef | grep mita.jar | grep -v "grep" | wc -l # echo $count nowtimedate "%Y-%m-%d %H…

开放最短路径优先 - OSPF【LSA详细】

目录 LSA的头部结构 LSA类型 LSA数据包 LSA的主要作用是传递路由信息。 LSA的头部结构 共占20个字节&#xff0c;不同类型的LSA头部字段部分都是相同的。 链路状态老化时间(Link-State Age) 2个字节。指示该条LSA的老化时间&#xff0c;即它存在了多长时间&#xff0c;单位…

SpringBoot+Spring+MyBatis相关知识点

目录 一、相关概念 1.spring框架 2.springcloud 3.SpringBoot项目 4.注解 5.SpringBoot的文件结构 6.启动类原理 二、相关操作 1.Jar方式打包 2.自定义返回的业务状态码 3.Jackson 4.加载配置文件 5.异常处理 三、优化配置 1.简化sql语句 2.查询操作 复杂查询 一…

《双影奇境》手机版上线?ToDesk用跨平台技术实现「全设备云电脑3A游戏」

《双影奇境》是由Hazelight Studios研发发行的一款双人合作冒险类游戏&#xff0c;玩家们在游戏中将扮演米欧和佐伊两位风格迥异的女作家&#xff0c;剧情讲述的是她们被骗进入一台意在窃取创意的机器后便陷入了自己创作的故事之中&#xff0c;并且必须相互依靠&#xff0c;努力…

【教程】Windows下 Xshell 连接跳板机和开发机

需求 使用远程连接工具 Xshell 连接跳板机&#xff0c;再从跳板机连接开发机&#xff0c;用户登陆方式为使用密钥。 方法 首先&#xff0c;建立一个会话&#xff0c;用于配置跳板机信息和开发机转跳信息&#xff1a; 在【连接】页面&#xff0c;给跳板机取个名字&#xff0c…

如何快速入门物联网单片机开发?

背景 物联网单片机硬件开发涉及多个阶段&#xff0c;元器件是否“自己设计”取决于具体需求。以下是详细解答和学习方案&#xff1a; 一、元器件是否自己设计&#xff1f; 通用元器件&#xff1a; 大多数情况下&#xff0c;开发者直接使用现成的标准化元器件&#xff08;如电阻…

每日一题(小白)模拟娱乐篇11

由题可知就是要求计算一个数字&#xff0c;可以整除10进制的每一位&#xff0c;亦可以整除8进制和16进制的每一位。要求找出第2023个能够在三个进制下同时被10进制整除的数字。 Java中已经封装了进制转换的方法&#xff0c;以下是一些常用的转换方法&#xff1a;&#x1f447;…

阿里巴巴langengine二次开发大模型平台

阿里巴巴LangEngine开源了&#xff01;支撑亿级网关规模的高可用Java原生AI应用开发框架 - Leepy - 博客园 阿里国际AI应用搭建平台建设之路(上) - 框架篇 基于java二次开发 目前Spring ai、spring ai alibaba 都是java版本的二次基础能力 重要的是前端工作流 如何与 服务端的…

MINIQMT学习课程Day8

获取qmt账号的资金账号后&#xff0c;我们进入下一步&#xff0c;如何获得当前账号的持仓情况 还是之前的步骤&#xff0c;打开qmt&#xff0c;选择独立交易&#xff0c; 之后使用pycharm&#xff0c;编写py文件。 from xtquant import xtdata from xtquant.xttrader import…

在QGIS中将矢量数据导出为JSON

在QGIS中将矢量数据导出为JSON的完整操作指南如下&#xff0c;支持GeoJSON标准格式及自定义配置&#xff1a; 一、标准GeoJSON导出&#xff08;推荐&#xff09; 适用场景&#xff1a;生成符合OGC标准的地理JSON文件&#xff0c;适用于Web地图开发 准备图层 确保目标图层在QG…

Netty——连接超时 与 断开重连

文章目录 1. 处理连接超时和断开重连的原因2. 处理连接超时和断开重连的方法2.1 处理连接超时2.1.1 步骤一&#xff1a;配置连接超时时间2.1.2 步骤二&#xff1a;监听连接结果 2.2 处理断开重连2.2.1 步骤一&#xff1a;监听连接断开事件2.2.2 步骤二&#xff1a;实现重连逻辑…

Redis 与 AI:从缓存到智能搜索的融合之路

Redis 与 AI&#xff1a;从缓存到智能搜索的融合之路 在当今数字化时代&#xff0c;Redis 不仅是一个高性能的缓存系统&#xff0c;更是一个强大的 AI 支持平台。Redis 通过其向量数据库功能和 AI 工具&#xff0c;为现代应用提供了独特的技术优势。 一、Redis 的 AI 能力 &…

LeetCode435 -- 预定会议问题

0. ref 参考自 1. 题目描述 预定会议问题&#xff1a;给定我们一堆区间&#xff0c;区间不能重叠&#xff08; [ 1 , 2 ] [1,2] [1,2] 和 [ 2 , 3 ] [2,3] [2,3] 的 2 2 2 不算重叠&#xff09;&#xff0c;求最多能保留多少个区间&#xff1f; 做法&#xff1a;贪心&#…

leetcode51-N皇后

leetcode 51 思路 本题可以使用回溯算法来解决。回溯算法通过尝试所有可能的解决方案来找到问题的解的算法&#xff0c;当发现当前的选择无法得到有效的解决方案时&#xff0c;就回溯到上一步&#xff0c;尝试其他的选择。对于 N 皇后问题&#xff0c;我们可以逐行放置皇后&…

linux paste 命令

paste 是 Linux 中一个用于水平合并文件内容的命令行工具&#xff0c;它将多个文件的对应行以并行方式拼接&#xff0c;默认用制表符&#xff08;Tab&#xff09;分隔。 1. 基本语法 paste [选项] 文件1 文件2 ... 2. 常用选项 选项说明-d指定拼接后的分隔符&#xff08;默…

Linux 入门:基础开发工具(上)vim,gcc/g++,make/makefile

目录 一.软件包管理器 一&#xff09;.软件包 二&#xff09;.安装软件 三&#xff09;.删除软件 二.编辑器vim 一&#xff09;.vim的基本介绍 1.正常/普通/命令模式(Normal mode) 2.插入模式(Insert mode) 3.底行模式(last line mode) 二&#xff09;.vim的基本操作 …

在CPU服务器上部署Ollama和Dify的过程记录

在本指南中&#xff0c;我将详细介绍如何在CPU服务器上安装和配置Ollama模型服务和Dify平台&#xff0c;以及如何利用Docker实现这些服务的高效部署和迁移。本文分为三大部分&#xff1a;Ollama部署、Dify环境配置和Docker环境管理&#xff0c;适合需要在本地或私有环境中运行A…

请求被中止: 未能创建 SSL/TLS 安全通道。

需要安装vs2019社区办&#xff0c;下载VisualStudioSetup.exe后&#xff0c;报无法从"https://aka,ms/vs/16/release/channel"下载通道清单错误&#xff0c;接着打开%temp%目录下的最新日志&#xff0c;发现日志里报&#xff1a; [27d4:000f][2025-04-04T21:15:43] …

第六课:AI绘画进阶模型

文章目录 Part.01 文本嵌入(Embeddings)Part.02 低秩模型(LoRa)Part.03 超网络(Hypernetwork)Part.01 文本嵌入(Embeddings) Embeddings(Textual Inversion)Checkpoint如果是字典,Embeddings就是书签,让检索更加高效深度学习中Embeddings叫做嵌入式向量使用方法:下载Embeddi…