Redux 常见问题解答:通用
我什么时候应该学习 Redux?
对于 JavaScript 开发人员来说,学习什么可能是一个令人不知所措的问题。通过一次学习一件事并专注于工作中遇到的问题,可以缩小选择范围。Redux 是一种用于管理应用程序状态的模式。如果您在状态管理方面没有问题,您可能会发现 Redux 的好处难以理解。一些 UI 库(如 React)有自己的状态管理系统。如果您正在使用其中一个库,尤其是如果您只是学习使用它们,我们建议您先学习该内置系统的功能。这可能是构建应用程序所需的一切。如果您的应用程序变得非常复杂,以至于您对状态存储在哪里或状态如何变化感到困惑,那么现在是学习 Redux 的好时机。
我们建议大多数新学习者应该先专注于学习 React,并在您已经熟悉 React 之后再学习 Redux。这样,一次学习的新概念就更少了,而且更清楚哪些概念是 React 的一部分,哪些概念是 Redux 的一部分。您还将更好地了解如何在 React 应用程序中使用 Redux,以及为什么 Redux 会有用。
更多信息
文章
讨论
- Ask HN:学习前端感到不知所措,我该怎么办?
- Twitter:如果你想教别人使用抽象...
- Twitter:它从未打算在...之前学习...
- Twitter:在学习 React 之前学习 Redux?
- Twitter:这是我使用 Redux 的经验...
- Dev.to:什么时候应该使用 Redux?
我什么时候应该使用 Redux?
并非所有应用程序都需要 Redux。了解您正在构建的应用程序类型、需要解决的问题类型以及哪些工具可以最好地解决您面临的问题非常重要。
Redux 帮助您处理共享状态管理,但与任何工具一样,它也有权衡。它不是为了成为编写代码的最短或最快的方式而设计的。它旨在帮助回答“某个状态片段何时发生变化以及数据来自何处?”这个问题,并具有可预测的行为。需要学习更多概念,并编写更多代码。它还会给您的代码增加一些间接性,并要求您遵循某些限制。这是短期和长期生产力之间的权衡。
正如 React 早期贡献者之一 Pete Hunt 所说
你会知道什么时候需要 Flux。如果你不确定是否需要它,那么你就不需要它。
同样,Redux 的创建者之一 Dan Abramov 说
我想修改一下:在你遇到原生 React 问题之前,不要使用 Redux。
Redux 在以下情况下最有用::
- 你的应用程序状态量很大,需要在应用程序的许多地方使用
- 应用程序状态经常更新
- 更新该状态的逻辑可能很复杂
- 应用程序具有中等或大型代码库,可能由多人协作开发
- 你需要查看该状态是如何随着时间的推移而更新的
还有许多其他工具可以帮助解决 Redux 解决的一些相同问题:状态管理、缓存获取的服务器数据以及通过 UI 传递数据。
如果你不确定 Redux 是否适合你的应用程序,以下资源可以提供更多指导
最终,Redux 只是一个工具。它是一个很棒的工具,使用它有很多很好的理由,但也有一些你不想要使用它的理由。对你的工具做出明智的决定,并了解每个决定所涉及的权衡。
更多信息
文档
文章
讨论
- Twitter:在...之前不要使用 Redux
- Twitter:Redux 被设计为可预测的,而不是简洁的
- Twitter:Redux 有助于消除深层道具传递
- Twitter:除非你对本地组件状态不满意,否则不要使用 Redux
- Twitter: 如果你的数据从不改变,你就不需要 Redux
- Twitter: 如果你的 reducer 看起来很无聊,就不要使用 redux
- Reddit: 如果你的应用程序只是在一个页面上获取一些东西,你就不需要 Redux
- Stack Overflow: 为什么使用 Redux 而不是 Facebook Flux?
- Stack Overflow: 在这个例子中,我为什么要使用 Redux?
- Stack Overflow: 使用 Redux 而不是 Flux 的缺点是什么?
- Stack Overflow: 什么时候应该在 React 应用程序中添加 Redux?
- Stack Overflow: Redux 与普通 React?
- Twitter: Redux 是一个平台,供开发人员使用可重用组件构建定制的状态管理
Redux 只能与 React 一起使用吗?
Redux 可以用作任何 UI 层的数据存储。最常见的用法是与 React 和 React Native 一起使用,但有适用于 Angular、Angular 2、Vue、Mithril 等的绑定。Redux 只是提供了一个订阅机制,可以被任何其他代码使用。也就是说,当与可以从状态更改推断 UI 更新的声明式视图实现(如 React 或类似库)结合使用时,它最有用。
我需要使用特定的构建工具才能使用 Redux 吗?
Redux 使用现代 JS 语法(ES2020)编写,但代码相当简单。
如果你需要针对旧浏览器,请自行转译。
该 counter-vanilla 示例演示了使用 Redux 的基本 ES5 用法,其中 Redux 作为 <script>
标签包含在内。正如相关的拉取请求所说
新的 Counter Vanilla 示例旨在消除 Redux 需要 Webpack、React、热重载、sagas、action creators、常量、Babel、npm、CSS 模块、装饰器、流利的拉丁语、Egghead 订阅、博士学位或超出预期的 O.W.L. 级别的误解。
不,它只是 HTML、一些手工制作的
<script>
标签和普通的 DOM 操作。享受吧!