大白话说说redux

news2024/10/5 8:38:09

redux的3个重要概念

  1. store 就是用来存放应用的各种状态的
  2. action 就是用来描述应用发生了什么动作的,注意理解他是对动作的描述
  3. reducer 就是用来处理应用的动作,并且决定怎么去更新应用存放在store里面的状态。

redux的3个原则

  1. 应用的所有状态存储为redux store的单一对象
  2. 应用不能直接更改store存储的状态,你需要让redux通过action来知道需要更改状态
  3. 你需要通过写一个reducer函数来更新状态,reducer解释两个参数,(之前的状态,action),函数返回最新的state.
    在这里插入图片描述

action 和 action creator

在这里插入图片描述

reducer

reducer根据action的type做相应的动作。
在这里插入图片描述

store是怎么实现保存应用的状态的?

创建store的时候,需要传的reducer参数给到store. 而reducer里面,保存了应用的状态。

const store = createStore(reducer)

整个处理流程,如下图

在这里插入图片描述
所以redux的整个流程,用大白话总结起来:顾客[app] 朝店里[store],用喇叭[actiong creator]喊了声[dispatch]买蛋糕[action],店员[reducer]听到后,启动买蛋糕的流程[去架子上拿蛋糕,库存减1…]. 顾客不能直接自己到架子上拿蛋糕[app 不能直接操作状态],否则就容易乱套。

++ 对reducer函数里面的 …state 的理解
…state 是对原来的 state 对象进行了浅拷贝,但这个拷贝过程并不涉及对 state 变量本身的重新赋值。它实际上是在创建一个新对象,并且这个新对象包含了原 state 对象中的所有属性和对应的值。这个新对象随后会用新的值更新特定的属性,而不影响原始的 state 对象。

在 Redux 中,reducer 函数必须是纯函数,意味着它们不能修改其接收到的输入参数,包括 state。因此,我们使用对象扩展运算符 … 来创建 state 的一个新的副本,然后在这个新副本上做出修改并返回,而原来的 state 对象保持不变。这样做是为了保持状态的不可变性,它是 Redux 架构中非常重要的一个概念。

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

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

相关文章

消息中间件之RocketMQ源码分析(十)

Namesrv启动流程 第一步:脚本和启动参数配置。 启动命令 nohup ./bin/mqnamesrv -c ./conf/namesrv.conf > dev/null 2>&1 & 通过脚本配置启动基本参数,比如配置文件路径、JVM参数,调用NamesrvStartup.main()方法,解析命令行的…

Vue24 收集表单数据 实例

实例 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>收集表单数据</title><script type"text/javascript" src"../js/vue.js"></script></head><body><!-- 收集…

Spring Security基础学习

一、SpringSecurity框架简介 二、SpringSecurity入门案例 三、SpringSecurity Web权限方案 四、SpringSecurity微服务权限方案 五、SpringSecurity原理总结

Eclipse - Expressions Add Watch Expression

Eclipse - Expressions & Add Watch Expression References Window -> Show View -> Other… Show View -> Debug -> Expressions -> Open Debug 模式下出现 Expressions 窗口 Debug 模式下&#xff0c;如果需要查看指定变量或者返回函数的值&#xff0c;直…

千分位分隔?一个vue指令搞定

说在前面 &#x1f388;对数字进行千分位分隔后展示应该是大部分同学都做过的功能了吧&#xff0c;常规的做法通常是编写一个工具函数来对数据进行转换&#xff0c;那么我们可不可以通过vue指令来实现这一功能呢&#xff1f; 效果展示 实现原理 非输入框 非输入框我们只需要对…

力扣题目训练(16)

2024年2月9日力扣题目训练 2024年2月9日力扣题目训练530. 二叉搜索树的最小绝对差541. 反转字符串 II543. 二叉树的直径238. 除自身以外数组的乘积240. 搜索二维矩阵 II124. 二叉树中的最大路径和 2024年2月9日力扣题目训练 2024年2月9日第十六天编程训练&#xff0c;今天主要…

【白嫖8k买的机构vip教程】python(2):python_re模块

python之re模块 一、正则表达式   re模块是python独有的匹配字符串的模块&#xff0c;该模块中提供的很多功能是基于正则表达式实现的&#xff0c;而正则表达式是对字符串进行模糊匹配&#xff0c;提取自己需要的字符串部分&#xff0c;他对所有的语言都通用。注意&#xf…

程序员必看的几部电影

目录 《我是谁&#xff1a;没有绝对安全的系统》 《模仿游戏》 《硅谷传奇》 《代码 The Code》 作为程序员&#xff0c;除了在工作中不断学习和提升技术外&#xff0c;适当地放松也是必不可少的 看电影可以是一个很好的放松方式&#xff0c;而对于程序员来说&#xff0c;…

GO框架基础 (一)、MySQL数据库

什么是数据库 数据库是一个组织化的数据集合&#xff0c;它被设计为方便存储、管理和检索数据。数据库通常以表格的形式组织数据&#xff0c;其中每一行代表一个数据记录&#xff0c;每一列代表一个数据字段。数据库系统提供了一种结构化的方法来存储和管理数据&#xff0c;以…

Android 基础技术——Binder 机制

笔者希望做一个系列&#xff0c;整理 Android 基础技术&#xff0c;本章是关于Binder 机制 什么是Binder 机制&#xff1a;Binder 是一种进程间通信机制 驱动&#xff1a;Binder 是一个虚拟物理设备驱动 应用层&#xff1a;Binder 是一个能发起通信的 Java 类 为什么要使用Bind…

Springboot返回给前端的日期变成时间戳问题处理

问题&#xff1a; 解决方案 在对应的Entity类中&#xff0c;给对应属性添加JsonFormat​注解 ​JsonFormat​注解用于将Date日期格式化为指定格式的字符串。由于在序列化时间时是按照国际标准时间GMT进行格式化的&#xff0c;最后接受到的数据会早8个小时&#xff0c;所以应该…

力扣 188. 买卖股票的最佳时机 IV

题目来源&#xff1a;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/description/ C题解&#xff1a;动态规划 思路同力扣 123. 买卖股票的最佳时机 III-CSDN博客&#xff0c;只是把最高2次换成k次。如果思路不清晰&#xff0c;可以将k从0写到4等找找规律…

FPGA转行ISP的探索之一:行业概览

ISP的行业位置 最近看到一个分析&#xff0c;说FPGA的从业者将来转向ISP&#xff08;Image Signal Process图像信号处理&#xff09;是个不错的选择&#xff0c;可以适应智能汽车、AI等领域。故而我查了一下ISP&#xff0c;对它大致有个概念。 传统的ISP对应的是相机公司&…

phaseDNN文章解读

文章DOI: https://doi.org/10.48550/arXiv.1905.01389 作者是 Southern Methodist University 的Wei Cai 教授 A Parallel Phase Shift Deep Neural Network for Adaptive Wideband Learning 一种并行移相深度神经网络来自适应学习宽带频率信号 20190514 核心思想&#xff1a;…

一起来攻克回调函数(学习笔记)

1&#xff1a;回调函数的简单说明 回调函数概念&#xff0c;和应用场景。其实是比较复杂的&#xff0c;但是我们尝试从易到难。 1&#xff1a;我们先了解回调函数&#xff0c;先看代码 #include<stdio.h> int test1(int x,int y) { printf("xy%d\…

微博数据可视化分析:利用Python构建信息图表展示话题热度

1. 引言 随着社交媒体的迅速发展&#xff0c;微博已成为人们交流观点、表达情感的重要平台之一。微博评论数据蕴含着丰富的信息&#xff0c;通过对这些数据进行分析和可视化&#xff0c;我们可以深入了解用户对特定话题的关注程度和情感倾向。本文将介绍如何利用Python进行微博…

mysql数据库表数据创建时间、更新时间自动生成配置

create_time&#xff1a;CURRENT_TIMESTAMP DEFAULT_GENERATED update_time&#xff1a;on update CURRENT_TIMESTAMP

HarmonyOS4.0系统性深入开发34栅格布局(GridRow/GridCol)

栅格布局&#xff08;GridRow/GridCol&#xff09; 概述 栅格布局是一种通用的辅助定位工具&#xff0c;对移动设备的界面设计有较好的借鉴作用。主要优势包括&#xff1a; 提供可循的规律&#xff1a;栅格布局可以为布局提供规律性的结构&#xff0c;解决多尺寸多设备的动态…

【漏洞复现-通达OA】通达OA share存在前台SQL注入漏洞

一、漏洞简介 通达OA&#xff08;Office Anywhere网络智能办公系统&#xff09;是由北京通达信科科技有限公司自主研发的协同办公自动化软件&#xff0c;是与中国企业管理实践相结合形成的综合管理办公平台。通达OA为各行业不同规模的众多用户提供信息化管理能力&#xff0c;包…

基于 SEBAL 模型的河套灌区永济灌域蒸散发估算及其变化特征_李彦彬_2023

基于 SEBAL 模型的河套灌区永济灌域蒸散发估算及其变化特征_李彦彬_2023 摘要关键词 1 数据1.1 研究区概况1.2 数据来源 2 研究方法2.1 SEBAL 模型原理2.2 FAO P-M 公式2.3 模型精度评价 3 结果分析3.2 日蒸散反演结果及变化3.3 不同土地利用类型蒸散特征分析 4 结论与讨论 摘要…