我已经阅读了这个答案,减少了样板文件,看了一些GitHub的例子,甚至尝试了一些redux (todo应用程序)。

据我所知,与传统的MVC架构相比,官方redux文档的动机提供了优点。但它并没有提供以下问题的答案:

为什么你应该使用Redux而不是Facebook Flux?

函数式与非函数式仅仅是编程风格的问题吗?或者问题是redux方法所带来的能力/开发工具?也许扩展?还是测试?

如果我说redux对于那些来自函数式语言的人来说是一种变化,我说的对吗?

要回答这个问题,您可以比较redux在flux和redux上的动机点的实现复杂性。

以下是官方redux文件中的动机点:

处理乐观的更新(据我所知,这几乎不依赖于第五点。在facebook flux中执行它是否困难?) 在服务器上渲染(facebook flux也可以做到这一点。与redux相比有什么好处吗?) 在执行路由转换之前获取数据(为什么它不能在facebookflux中实现?有什么好处?) 热重载(这是可能的React热重载。为什么我们需要redux?) 撤销/重做功能 还有什么问题吗?比如持久化状态…


当前回答

你可能最好从Dan Abramov的这篇文章开始阅读,他在那里讨论了Flux的各种实现以及他们在写redux时的权衡: 通量框架的演化

其次,你链接到的动机页面并没有真正讨论Redux的动机,而是讨论Flux(和React)背后的动机。三个原则是更具体的Redux,但仍然没有处理与标准Flux架构的实现差异。

Basically, Flux has multiple stores that compute state change in response to UI/API interactions with components and broadcast these changes as events that components can subscribe to. In Redux, there is only one store that every component subscribes to. IMO it feels at least like Redux further simplifies and unifies the flow of data by unifying (or reducing, as Redux would say) the flow of data back to the components - whereas Flux concentrates on unifying the other side of the data flow - view to model.

其他回答

这是Redux / Flux的简单解释。 Redux没有分派器。它依赖于称为约简的纯函数。它不需要调度程序。每个操作由一个或多个简化器处理,以更新单个存储。由于数据是不可变的,reducers返回一个新的更新状态来更新存储

更多信息Flux vs Redux

我用Flux工作了很长时间,现在用Redux工作了很长时间。正如Dan指出的那样,这两种架构并没有太大的不同。Redux让事情变得更简单、更清晰。它在Flux的基础上教给你一些东西。比如Flux就是一个单向数据流的完美例子。关注点分离,数据、操作和视图层分离。在Redux中,我们有同样的东西,但我们也学习了不变性和纯函数。

2018年年中,一个新的react/redux采用者从(几年的)ExtJS迁移过来:

在redux学习曲线向下滑动之后,我有同样的问题,并认为纯通量会像OP一样更简单。

我很快就看到了redux对flux的好处,就像上面的答案中提到的那样,并将其应用到我的第一个应用程序中。

在再次掌握锅炉板的同时,我尝试了其他一些国家管理libs,我发现最好的是rematch。

它比普通的redux更直观,它减少了90%的样板文件,减少了我花在redux上的75%的时间(我认为一个库应该这样做),我能够让几个企业应用立即运行起来。

它还使用相同的redux工具运行。这是一篇很好的文章,涵盖了一些好处。

因此,对于任何其他到达这篇So帖子搜索“更简单的redux”的人,我建议尝试它作为一个简单的redux的替代品,它具有所有的好处和1/4的模板。

根据这篇文章: https://medium.freecodecamp.org/a-realworld-comparison-of-front-end-frameworks-with-benchmarks-2019-update-4be0d3c78075

你最好使用MobX来管理应用中的数据以获得更好的性能,而不是Redux。

我是一个早期的采用者,并使用Facebook Flux库实现了一个中等大小的单页面应用程序。

虽然我有点晚了,但我要指出的是,尽管我寄予了最大的希望,但Facebook似乎认为他们的Flux实现是一个概念的证明,它从未得到应有的关注。

我鼓励您使用它,因为它揭示了Flux架构的更多内部工作原理,这非常有教育意义,但与此同时,它没有提供像Redux这样的库所提供的许多好处(这些好处对于小型项目并不那么重要,但对于大型项目非常有价值)。

我们已经决定继续前进,我们将移动到Redux,我建议你也这样做;)