跳至主内容
非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

Redux 常见问题:一般问题

何时学习 Redux?

对于 JavaScript 开发者而言,选择学习什么内容可能令人困惑。更好的方式是每次专注于学习一项技术,并优先解决实际工作中遇到的问题。Redux 是一种管理应用状态的模式。若您没有遇到状态管理问题,可能较难理解 Redux 的价值。部分 UI 库(如 React)自带状态管理系统。若您正在使用这类库,尤其是刚接触它们时,建议先掌握其内置系统的功能,这也许已足够满足应用开发需求。当应用复杂度提升至您难以追踪状态存储位置或变化方式时,便是学习 Redux 的最佳时机。

技巧

我们建议大多数初学者先专注学习 React,待熟练掌握 React 后再学习 Redux。这样能减少同时学习的新概念数量,更清晰地区分哪些属于 React 范畴,哪些属于 Redux 范畴。您也能更透彻地理解 Redux 如何融入 React 应用,以及 Redux 的实际价值。

扩展阅读

文章

讨论

何时使用 Redux?

并非所有应用都需要 Redux。关键在于理解您构建的应用类型、需要解决的问题类型,以及哪些工具能最高效解决这些问题。

Redux 虽能协助管理共享状态,但与其他工具相同,它需要权衡取舍。其设计目标并非提供最简捷的编码方式,而是通过可预测的行为回答"状态的特定部分何时变化?数据从何而来?"这类问题。这要求学习更多概念、编写更多代码,引入间接性操作并遵循特定约束,本质上是短期效率与长期可维护性的平衡。

正如 React 早期贡献者 Pete Hunt 所言:

当您需要 Flux 时自会明白。若您不确定是否需要,那就不需要。

Redux 联合创造者 Dan Abramov 同样强调:

我稍作补充:除非您在使用原生 React 时遇到问题,否则不要使用 Redux。

在以下情况中,Redux 最为有用:

  • 应用中有大量状态需要在多个地方使用

  • 应用状态更新频繁

  • 状态更新逻辑可能较为复杂

  • 应用代码库规模中等或庞大,且可能由多人协作开发

  • 需要查看状态随时间如何更新

此外,还有许多其他工具可帮助解决 Redux 所处理的相同问题:状态管理、缓存服务器数据以及在 UI 中传递数据。

信息

如果不确定 Redux 是否适合你的应用,以下资源提供了更多指导:

归根结底,Redux 只是一个工具。它非常出色且有很多使用理由,但也有一些不使用它的理由。请对你的工具做出明智决策,并理解每个决策所涉及的权衡取舍。

扩展阅读

文档

文章

讨论

Redux 只能与 React 一起使用吗?

Redux 可以用作任何 UI 层的数据存储。最常见的用法是与 React 和 React Native 配合,但也有适用于 Angular、Angular 2、Vue、Mithril 等框架的绑定库。Redux 本身只提供订阅机制,任何代码都可以使用。不过当与声明式视图库(如 React 或类似库)结合时最为强大,这类库能够根据状态变化推断出 UI 更新。

使用 Redux 需要特定的构建工具吗?

Redux 采用现代 JavaScript 语法(ES2020)编写,但代码相当简洁。

如果需要兼容旧版浏览器,请自行进行转译。

counter-vanilla 示例演示了通过 <script> 标签引入 Redux 的基本 ES5 用法。正如相关 pull request 所述:

这个新的 Counter Vanilla 示例旨在打破一个误解:Redux 需要 Webpack、React、热重载、sagas、action creators、常量、Babel、npm、CSS 模块、装饰器、流利的拉丁语、Egghead 订阅、博士学位或 O.W.L. 考试超出预期等级。

不,它只需要 HTML、几个手工打造的 <script> 标签,以及最朴素的 DOM 操作。尽情享用吧!