Reducer17 Mar 2025 | 5 分钟阅读 引言我们已经学习了 Redux 及其 React 状态管理解决方案。随着 Redux 的兴起,Reducer 在开发者中获得了极大的普及。我们不需要学习 Redux 就能理解 Reducer。了解 Redux 可能会帮助我们更快地适应。在本文中,我们将学习 Reducer 及其含义,让我们开始吧。 Reducer 可以被定义为一个纯函数,当它以应用程序的状态和动作作为参数时,会返回一个新的状态。通常来说,Reducer 是应用程序中的状态管理器。考虑一个例子,我们在 HTML 中为一个输入字段编写代码。Reducer 会据此管理应用程序的 UI 状态或受控组件。 再举一个例子,如果我们设计一个认证 Reducer,它可以在应用程序的初始阶段接收一个空对象。我们可以通知用户他已登录,并返回到用户被标记为已登录状态。就是这么简单。 实施在实现 Reducer 之前,我们可能需要从纯函数的基础开始。纯函数就是没有任何副作用的函数,只要传入相同的参数,它们就会返回相同的结果。状态管理也是一种纯函数,与之相关的动作也可以被视为纯函数。考虑下面的代码: 上面的示例根据我们提供的输入字段 2 和 3 返回一个值,只要输入相同,我们总是会得到 6 作为输出。其他任何东西都无法影响我们得到的输出。同样,Reducer 可以轻松地以相同的方式实现。考虑下面的代码: 在上面的代码中,我们定义了与 Reducer 相关的 state 和 action 属性。让我们深入了解它们。 国家状态可以被视为数据组件,它保存组件所需的数据,并指示组件渲染,如果对象更改其状态,则重新渲染。在 Redux 管理的应用程序中,Reducer 是状态更改发生的地方。 操作动作可以被定义为一个对象,它包含信息的有效负载,或者触发 Redux 应用程序状态更改的负责组件。在 JavaScript 中,动作默认是状态,它们告诉 Redux 执行特定类型的任务。考虑下面的代码: 动作可以被定义为一个对象,它包含信息的有效负载,或者触发 Redux 应用程序状态更改的负责组件。在 JavaScript 中,动作默认是状态,它们告诉 Redux 执行特定类型的任务。 一个 reducer 函数接受两个参数,即当前状态和动作,并根据这两个参数显示结果到一个新状态。考虑以下语法: 同样,也实现了 reducer 函数。考虑以下代码: 在这种情况下,reducer 函数将计数增加一,因为当前状态是一个整数。将 state 重命名为 count 并不会有什么坏处,因为参数变得更易读,并且对初学者来说是一个更好的方法。这使得 Reducer 函数成为推理状态变化以及在隔离环境中进行测试的理想选择。您可以重复相同的测试,使用相同的输入和相同的输出。 此外,我们还可以执行条件状态转换,就像我们在核心程序中那样。您可以使用增加和减少计数的相同概念来执行条件状态转换,就像我们在示例代码中所做的那样。考虑以下代码: 相反,可以说 JavaScript 中的 reducers 是数组中最有用的方法之一,它应该始终是开发者社区的工具箱中的成员。Reducers 可以被间接称为 map 方法,它与数组一起使用,以在特定情况下提高它们的简洁性和性能。如前所述,reduce 方法会调用回调函数来处理数组中的每个存储元素,并输出操作生成器的最终值。Reducers 提供了一种更清晰的方式来迭代对象并高效地处理存储在数组块中的数据。 为了更深入地了解 reducers,我们可以借助下面显示的示例来创建自己的 reducer。在此示例中,我们实现了一个 reducer 函数来观察其内部工作原理。这个例子将让你更好地了解何时在 JavaScript 中使用 Reducer 来优化程序的性能。 首先,我们可以检查 reduce 方法是否在null或undefined 对象上调用。然后我们检查传入的回调是否是一个函数。 在上面的代码中,我们首先检查 reducer 方法是否由未定义或 null 对象调用。然后我们检查传入的回调是否可以被视为一个函数。 在这些初始类型检查之后,我们将传入的初始值赋给累加器。然后我们使用循环遍历数组,为每个数组项调用回调。执行结束后,我们必须返回累加器的值。 我们仅使用此实现来帮助您理解 reduce 方法的实际工作原理。例如,您可以看到它在内部使用for 循环来遍历数组。 注意:我们仅使用上述代码示例来理解 reducers 的整体概念以及方法的工作原理。因此,上述示例不是生产质量的代码,仅用于在标准 JavaScript 中创建 reducer 方法的原型。结论Reducers 是 Redux 中状态管理不可或缺的一部分。借助 Reducers,我们可以轻松地管理数据在不同模式下的异步传输并进行配置。使用 Reducers 的另一个优点是,我们可以编写纯函数来更新 Redux 应用程序的特定区域,而不会在其他区域产生任何副作用。在本教程中,我们学习了 Reducers 的基础和核心,以及它如何在 Redux 应用程序中管理状态。我们还通过各种示例学习了 reducers 的核心,即 state 和 actions。 下一主题什么是进程间通信 |
? 在这个充满互联网和多人在线游戏的时代,尤其是在玩游戏时的互动方面,体验并不总是令人愉快的。在本节中,我们将了解 Discord 工具及其使用方法。由于没有...
5 分钟阅读
引言:您知道吗,世界可持续发展商业理事会最近的一份报告发现,到 2030 年,可持续产品和服务的全球市场将达到惊人的 23.5 万亿美元?这意味着消费者越来越倾向于选择优先考虑可持续发展的企业,而那些...
阅读9分钟
树莓派基金会是一家总部位于英国的慈善机构,创建了一系列小型、低成本的单板计算机(SBC)。这些小型计算机旨在用于各种DIY项目、教育环境以及作为低成本、节能的计算解决方案。由于其多功能性和可访问性,树莓派...
阅读 10 分钟
计算机有独特的语言,就像人们使用语言进行交流一样,不同的地理位置有不同的语言。已经创建了不同类型的语言来执行各种类型的计算机任务。一般来说,语言可以根据其...
阅读 4 分钟
?该国主要的金融市场是位于孟买的印度国家证券交易所有限公司。它成立于1992年,已发展成为一个复杂的计算机化系统,为全球投资者提供交易服务。以交易量衡量,该交易系统排名...
5 分钟阅读
液体剂型是可以倾倒的药物制剂,包含溶解或悬浮在合适溶剂或溶剂混合物中的药物成分和赋形剂的组合。它们旨在为患者产生快速的治疗效果和/或最大的治疗反应……
阅读 3 分钟
天使数字是特定数字的组合,它们经常在一个人的生活中出现,以传达信息。天使数字 333 就是一个例子。一些理论与特定数字序列相关联,例如 333 天使数字,这为特定元素赋予了重要性...
阅读 6 分钟
? WhatsApp 是当今最受欢迎的移动消息应用程序之一。它由 Jan Koum 和 Brian Acton 开发,但现在归 Facebook 所有。最近,它拥有近 150 万活跃用户。由于 WhatsApp 是一个非常流行的聊天应用程序...
阅读 8 分钟
?在继续讨论防火墙身份验证之前,让我们快速回顾一下什么是防火墙以及它是如何工作的。防火墙是一种网络安全设备,有助于组织监控传入和传出的网络流量,并且它还允许或阻止数据包...
5 分钟阅读
Microsoft Word 是一款广为人知的文字处理软件,用 C objective 和 C++ 编写,由 Microsoft Corporation 于 1983 年 10 月 25 日创建并发布。此后,它在写作领域占据了主导地位,大多数撰写文档或其他文章的专业员工都……
阅读 8 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India