首页 > 其他分享 >简单解释 什么是Redux

简单解释 什么是Redux

时间:2023-02-13 17:06:30浏览次数:53  
标签:解释 redux 状态 应用程序 UI 简单 组件 Redux

我已经有一段时间没有写任何东西了。我收到了很多关于在 Redux 上创建教程的消息!所以就在这里。我花了很多天时间使本教程更加简单易懂。
现在让我们开始吧^_^

在进入什么是 Redux 之前?让我们看看为什么我们首先需要 Redux。
问题 假设您的项目中有 app.js 文件作为根组件,在组件树中,第一层包含 3 个组件,在第二层中有第二个组件的两个子组件。

简单解释 什么是Redux_UI

简单解释 什么是Redux_UI_02

在这里,您已经从 API 获取数据并将其保存在第二个组件的状态中。您可以通过直接向下传递它们来在子组件中使用此数据状态。

现在,当 3 的邻居组件想要访问该数据状态时,就会出现问题。

所以问题是当需要共享和使用相同状态的多个组件时。

这可以通过将状态“提升”到父组件来解决。因此,您可以将状态从第二个组件提升到 app.js 文件。然后你可以在第三个组件中使用这个状态。

但这并不总是有帮助,因为在大型应用程序中,许多不同的组件需要使用许多状态,所以这不是最佳实践。

解决这个问题的一种方法是在组件树之外获取状态并将其设置为集中式。这样树中的任何组件都可以访问和更新状态,而不必担心它在树中的层次结构。

这是 Redux 背后的基本思想:一个集中的地方来包含应用程序中的全局状态,以及更新该状态时要遵循的特定模式。

您可以使用 redux 来存储状态,并且可以将其用于任何组件而无需担心层次结构。
**
现在让我们看看应用程序在没有 redux 的情况下如何正常工作。 **

简单解释 什么是Redux_UI_03

​将此操作视为更新状态的触发器,当状态发生更改时,视图会使用新状态更新 UI。

对于简单的计数器应用程序,当我们增加计数器值然后增加事件进入状态并且状态更新新值然后,视图根据更新的状态重新呈现 ui。

那么让我们看看使用 Redux 时会发生什么。

简单解释 什么是Redux_UI_04

在 redux 中有一个叫做 reducer 的函数。
这个 reducer 函数有两个参数,第一个是状态本身,第二个是动作对象。

动作对象可以有一种动作,如增量和任何想要修改状态的数据。

现在基于之前的状态值和动作类型 redux 计算状态的新值并更新它。
这些所有的事情都发生在 redux 存储中,你可以把它说成任何用于状态管理的集中式数据库。

然后,当视图获得新的状态值时,它会重新呈现 UI。

让我向您展示 redux 如何工作的另一个例子!

动图

简单解释 什么是Redux_UI_05

正如你在这里看到的,这是一个简单的 gif,它解释了 redux 是如何工作的,你可以在官方 redux 文档中找到它。

现在使用此 UI,您可以存款或取款。

当我们点击存款按钮时,点击事件转到事件处理程序,基于事件,事件处理程序分派一个类型为存款的操作以及 payload 属性中所需的任何详细信息。

这个 reducer 接受两个东西,状态和动作对象。state 的先前值为 0$,action 用于存入,因此 reducer 将通过存入 10$ 金额来更新新状态。

你可以在 UI 余额中看到,它从 0 变为 10$。

Redux 根据定义
它是 JS 应用程序的可预测状态容器。

这是,

可预测 --> 因为它可以帮助您编写行为一致并且可以在不同环境(客户端、服务器和本机)中运行的应用程序。

集中式 --> 由于此功能,我们不需要将状态提升到父组件,并且由于这种集中式行为,我们可以使用我们想要的任何组件的状态。

可调试 --> 有一个名为 Redux DevTools 的扩展,它是调试 Redux 应用程序的绝佳工具。使用此工具,您可以查看应用程序状态何时、何地、为何以及如何发生变化。

灵活 --> 因为它适用于任何 UI 层,并且拥有庞大的插件生态系统。

如果您对与此主题相关的任何事情感到困惑,请随时问我

标签:解释,redux,状态,应用程序,UI,简单,组件,Redux
From: https://blog.51cto.com/u_1213352/6054494

相关文章

  • 如何编写一个简单的 CLI 应用程序来下载、转换视频并将其保存为音频
    您是否一直想知道如何创建一个非常简单的CLI应用程序,让您可以从YouTube下载视频,将它们转换为音频,然后将它们保存到计算机上的指定文件夹中?在这篇文章中,我想解释一种在P......
  • RabbitMQ简单消息发送与接收
    RabbitMQ简单消息发送与接收​​1、前言​​​​2、简单消息发送与接收实战​​​​2.1引入依赖​​​​2.2消息生产者​​​​2.3消息消费者​​​​2.4测试​​1、前......
  • react状态管理redux
    redux产生的历史背景当我们的前端系统变得复杂,包含众多子组件,特别是包含很长一条子组件链时。我们的state管理就会非常繁琐,例如如下图,如果Child11需要用到App里的stat......
  • python画图的简单案例
    #导包frompyecharts.chartsimportLinefrompyecharts.optionsimportTitleOpts,ToolboxOpts,LegendOpts,VisualMapOpts#创建一个折线图像对象,即创建一个空的坐标系line......
  • 三层交换机简单配置
    LSW1: sysvlanbatch23intvlanif2ipadd20.0.0.124intvlanif3ipadd30.0.0.124inte0/0/2plapdvlan2inte0/0/3plapdvlan3inte0/0/1pltptavlan2......
  • 简单的$.ajax()的请求方式
    $.ajax({url:'http://www.baidu.com',//请求或发送数据的地址type:'POST',//请求方式,POST,GET,PUT,DELECT等data:data,//参数或者数据cache:true,//是......
  • 10个用于可解释AI的Python库
    XAI的目标是为模型的行为和决定提供有意义的解释,本文整理了目前能够看到的10个用于可解释AI的Python库什么是XAI?XAI,ExplainableAI是指可以为人工智能(AI)决策过程和预测提......
  • 实现一个简单Database8(译文)
    前文回顾实现一个简单的Database系列译注:cstack在github维护了一个简单的、类似sqlite的数据库实现,通过这个简单的项目,可以很好的理解数据库是如何运行的。本文是第八......
  • MixGo CE及外接模块管脚简单介绍
    之前用习惯了Arduino系列的板卡,也习惯了上面的管脚使用方法,换成MixGo系列的板卡,都是TypeC接口,这个管脚应该怎么看呢?MixGo系列的外接模块管脚又是怎么看,程序里面应该怎么......
  • 蓝桥杯 简单数论 乘机尾零
    题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。如下的 1010 行数据,每行有 1010 个整数,请你求出它们的乘积的末尾有多少个零?56504......