当前位置: 首页 > news >正文

Redux基础

简介

状态管理工具,集中式管理react、vue、angular等应用中多个组件的状态,是一个库,使用之后可以清晰的知道应用里发生了什么以及数据是如何修改,如何更新的

在项目中添加 Redux 并不是必须的,根据项目需求选择是否引入 Redux

三个原则

1.单一数据源 整个应用的 state 被储存在一棵 object tree 中,并且这个 object tree 只存在于唯一一个 store 中

2.State 是只读的 唯一改变 state 的方法就是触发 action,action 是一个用于描述已发生事件的普通对象。

3.使用纯函数来执行修改,为了描述 action 如何改变 state tree ,需要编写 reducers 

三个要素

1.Action(将要发生的操作)

2.Reducer(根据 action 更新 state,是一个纯函数)

        提供 combineReducers(reducers) 函数组合多个 reducer

3.存放 state 数据的 Store(将 action 和 reducer 联系到一起的对象)

        提供 getState() 方法获取 state 

        通过 subsctibe(listener) 注册监听器 

        通过 subscribr(listener) 返回的函数注销监听器

示例代码

创建一个简单的 Redux 应用,使用前先引入 Redux

npm install redux -S

使用Action 创建函数

 Action 创建函数,是一个返回 action 的函数

function increment() {return {type: "INCREMENT"}
}

Reducer

有了Action,还需要 Reducer 来执行更新(reducer 不是一个对象,而是一个返回更新后 state 的纯函数)

/**
* counters 就是一个 reducer,根据传入的 action 的 type 不同,返回一个新的 state 数据
*/
// 先初始化 state
const initCounter = 0;
function counters(state = initCounter, action) {switch(action.type) {case 'INCREMENT':return state ++;default:return state;}
}

创建store 存放 state 数据

通过 reducer 创建 store

const { createStore } = require('redux');const store = createStore(counters);

通过 store.dispatch(action) 将 action 发送给 reducer,更新 state

store.dispatch(increment());

查看结果

// 通过 store.getState() 获取 State 数据
console.log('counters: ', store.getState());   // => counters: 1

 总结

创建一个操作指令 action -> 创建一个 reducer -> 通过 createStore(reducer) 创建一个 store -> 通过 store。dispatch(action) 执行 reducer 中的更新操作,更新 store 中的数据

相关文章:

Redux基础

简介 状态管理工具,集中式管理react、vue、angular等应用中多个组件的状态,是一个库,使用之后可以清晰的知道应用里发生了什么以及数据是如何修改,如何更新的 在项目中添加 Redux 并不是必须的,根据项目需求选择是否引入 Redux 三个原则 …...

国外目标公司的任何一个联系人也许都有意义

我们说跟进一个项目,最好能够联系上拥有决策权的人,不然中间隔着几重关系,所有的更新都需要层层审批申报,特别麻烦,总是要等,也许等到最后就是一场空。如果能够直接和老板或者是拍板的人沟通,则…...

因为本地证书太旧或不全导致的 HTTPS 访问失败问题20240520

因为本地证书太旧或不全导致的 HTTPS 访问失败问题 在生产环境中,我们经常需要使用 curl 命令来测试和调试 HTTPS URL。然而,最近我遇到了一个棘手的问题:在测试环境中使用 curl 可以正常访问某个 URL,但在生产环境中却遇到了 SS…...

Lua获取表的长度

1.代码 -- 创建一个表并添加一些元素 local myTable {10, 20, 30, 40}-- 打印表的长度 print(#myTable) -- 输出 4,因为表中有 4 个元素-- 使用 # 来遍历表中的所有元素 for i 1, #myTable doprint(myTable[i]) end -- 这将依次打印 10, 20, 30, 40...

python九九乘法表的打印思考及实现

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、问题引入 九九乘法表的显示需求 二、问题分析 嵌套循环的概念 屏幕宽度与换行的考虑…...

2.Spring中用到的设计模式

Spring框架中使用了多种设计模式来构建其强大且灵活的功能,这里举例说明Spring中的一些功能使用到的设计模式。 工厂模式:Spring容器本质是一个大工厂,使用工厂模式通过BeanFactory和ApplicationContext这两个核心接口来创建和管理bean对象。…...

.NET调用阿里云人脸核身服务端 (ExecuteServerSideVerification)简易流程保姆级教学

需要注意的是,以下内容仅限基础调用 功能说明 该功能是输入核验人的姓名和身份证以及人脸照片,去阿里库里面匹配,3个信息是否一致,一致则验证通过,需要注意的是,人脸有遮挡,或者刘海&#xff0…...

[大师C语言(第十二篇)]C语言堆排序技术详解

引言 堆排序(Heap Sort)是一种基于比较的排序算法,它利用堆这种数据结构的特点来进行排序。堆是一种近似完全二叉树的结构,并同时满足堆积的性质:即子节点的键值或索引总是小于(或者大于)它的父…...

Activity启动流程要点

一、Activity启动流程 Activity的启动流程一般是通过调用startActivity或者是startActivityForResult来开始的startActivity内部也是通过调用startActivityForResult来启动Activity,只不过传递的requestCode小于0Activity的启动流程涉及到多个进程之间的通讯这里主…...

lua 计算第几周

需求 计算当前赛季的开始和结束日期,2024年1月1日周一是第1周的开始,每两周是一个赛季。 lua代码 没有处理时区问题 local const 24 * 60 * 60 --一整天的时间戳 local server_time 1716595200--todo:修改服务器时间 local date os.date("*t…...

负载均衡策略

...

海外网红营销新趋势:“快闪式”营销如何迅速提升品牌曝光度

在当今数字化时代,海外网红营销已成为品牌迅速触达全球消费者、提升品牌曝光度和刺激销售的重要手段。其中,“快闪式”营销以其独特的时效性、创意性和互动性,成为品牌与海外网红合作的新趋势。本文Nox聚星将和大家探讨如何利用海外网红的影响…...

速看!打造专属数字化能力模型的七大关键!

在数字化浪潮中,企业如何打造适应自身发展的数字化能力模型?这是许多企业面临的重要课题。今天,通过众多企业使用蚓链数字化生态解决方案实践总结,为大家分享至关重要的七大经验,助你开启数字化转型之旅! 1…...

青蛙跳台阶问题

本期介绍🍖 主要介绍:青蛙跳台阶问题,青蛙跳台阶与斐波那契数列的关系👀。 文章目录 1. 题目2. 递归解题思路3. 迭代解题思路 1. 题目 从前有一只青蛙他想跳台阶,有n级台阶,青蛙一次可以跳1级台阶&#xff…...

linux日常运维2

下载linux离线安装包---- 利用 Downloadonly 插件下载 RPM 软件包及其所有依赖包 1. 先找个可以上网的linux操作系统,这里是以centos7操作系统为例,如果要使用centos6就先安装一个centos6的系统,然后让他可以上网,后面步骤如下 a.…...

flink cdc mysql整理与总结

文章目录 一、业务中常见的需要数据同步的场景CDC是什么FlinkCDC是什么CDC原理为什么是FlinkCDC业务场景flink cdc对应flink的版本 二、模拟案例1.阿里云flink sql2.开源flink sql(单机模式)flink 安装安装mysql3.flink datastream 三、总结 提示:以下是本篇文章正文…...

【三维重建】ePnP

PnP问题应用与一下场景: 已知三维点和对应二维点以及相机相机内参数,可以获取相机外参。 我们介绍其中的一种算法:ePnP 算法流程 1、ePnP算法首先在世界坐标系内寻找4个控制点,记作 C 1 w , C 2 w , C 3 w , C 4 w C_1^w,C_2^w,…...

C++进阶之路:何为运算符重载、赋值运算符重载与前后置++重载(类与对象_中篇)

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...

8、python基础知识图谱

...

智慧校园建设规划方案

在信息化浪潮的推动下,智慧校园的建设已成为教育现代化的必然趋势。以创新科技赋能教育,打造智慧校园,旨在提升教学品质,优化管理流程,增强学生体验。构建智慧校园需要具有前瞻性的规划方案,它将以教育为核…...

VAE-TCN时间序列分析:从架构稳定性到复杂模式挖掘

1. 项目概述与核心问题在量子物理、金融预测、工业物联网这些领域,我们常常要和一堆按时间顺序排列的数据点打交道,这就是时间序列。传统上,用循环神经网络(RNN)或者长短期记忆网络(LSTM)来处理…...

Decompyle++:Python字节码源码恢复实战指南

1. 这不是“反编译”,是字节码层面的源码重建——为什么Decompyle成了Python逆向事实标准你有没有遇到过这样的情况:接手一个只有.pyc文件的遗留项目,没有源码,连__pycache__目录都被人删干净了;或者审计第三方SDK时&a…...

计算材料学驱动新型硅光伏材料发现:进化算法与机器学习融合设计

1. 项目概述:当计算材料学遇上光伏革命在光伏领域,硅材料长期占据着主导地位,这得益于其储量丰富、工艺成熟和稳定性好。然而,传统晶体硅(金刚石结构)一个众所周知的“阿喀琉斯之踵”是其间接带隙特性。这意…...

从Kaggle竞赛到业务落地:GBM特征重要性到底怎么看?用Python实战教你做模型可解释性分析

解密GBM特征重要性:从技术指标到业务决策的实战指南在金融风控和精准营销的实际业务场景中,数据科学家常常面临一个关键挑战:不仅要让模型预测准确,还要能够清晰解释模型决策的依据。GBM(Gradient Boosting Machines&a…...

SSH连接报kex_exchange_identification的4步根因定位法

1. 这个报错不是SSH客户端的问题,而是服务器在“拒之门外” “kex_exchange_identification”——这串字符第一次出现在终端里时,我正帮一位刚转行做运维的同事排查一台新部署的Ubuntu云服务器。他反复执行 ssh userip ,每次都在输入密码前…...

多智能体系统内存架构:共享与分布式内存的挑战与混合实践

1. 项目概述:当多智能体系统遇上计算机内存模型最近在折腾一个多智能体协作的项目,遇到了一个挺有意思的瓶颈:当几十个甚至上百个智能体(Agent)同时在一个环境里跑起来,试图共享信息、协同决策时&#xff0…...

跨环境漏洞复现:Docker Desktop与VMware Kali的TCP/信号对齐实战

1. 这不是“复现个POC就完事”的演练,而是真实攻防链路上的环境卡点攻坚你有没有遇到过这种情况:在本地Kali虚拟机里跑通的CVE-2026-24061利用脚本,一放到客户现场的Docker Desktop环境里就报错——不是缺Python模块,就是socket连…...

计算机视觉如何让外骨骼机器人实现预见式步态辅助控制

1. 项目概述:当外骨骼“睁开双眼”在康复工程和可穿戴机器人领域,让外骨骼机器人像人类一样“聪明”地辅助行走,一直是个核心挑战。传统的控制策略高度依赖惯性测量单元、足底压力传感器等本体传感器来估计步态相位,进而提供力矩辅…...

AI时代版权新范式:智能代理如何重塑数据交易与创作者权益

1. 项目概述:当AI遇见版权,一场静默的“数据战争”正在上演如果你是一位内容创作者,无论是撰写深度文章的记者、绘制插画的艺术家,还是谱写旋律的音乐人,过去几年可能都经历过一种复杂的情绪:看着自己的作品…...

d2dx终极教程:三步让暗黑破坏神2在现代PC上焕然一新

d2dx终极教程:三步让暗黑破坏神2在现代PC上焕然一新 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 还在为暗黑破…...