没有全局/单例的反应模式

Posted

技术标签:

【中文标题】没有全局/单例的反应模式【英文标题】:React patterns without globals/singletons 【发布时间】:2015-07-21 08:10:30 【问题描述】:

我见过一些来自其他人的 cmets,他们也对使用 Flux 提倡的全球调度员和商店持谨慎态度。我想知道,您使用了哪些替代设计模式?

更新

在熟悉了react-redux 的工作原理后,我意识到它根本不涉及全局单例,而只是在React context 上放置一个商店,我认为这是一个很棒的解决方案。

【问题讨论】:

【参考方案1】:

Flummox 是一个不错的 Flux 实现,它不依赖于单例存储/调度程序。

单例的问题主要是如果你想在服务器上运行 React。如果您只在客户端上运行,那么可以公平地假设商店/调度员只为一个用户提供服务。因此,您可以假设商店中的状态是属于该用户的状态。但是您不能在服务器上做出这样的假设,因为同一个单例将用于多个请求/用户。您仍然可以在服务器上使用单例,但您必须将用户 ID 传递给商店中的所有操作和方法。

【讨论】:

是的,我最终使用了 Redux,这更加极端,只有一个全球商店。但有时我希望我可以为对话框和具有临时状态的事物创建单独的存储,因为在我复杂的 RIA 中,让用户输入到输入中的每个字母一直通过 Redux 存储有点慢,即使是纯粹的渲染优化, 处于调试模式。 您仍然可以使用组件本地状态。你不必把所有东西都放在你的 Redux 存储中。某些状态对于组件来说是真正本地的,它可以使将其放置在组件中变得更简单(更快)。

以上是关于没有全局/单例的反应模式的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C和Swift实现单例的几种方式

C++ 这个类和单例的全局声明有啥好的选择吗? [复制]

java设计模式之单例模式

设计模式创建型模式之单例模式

关于设计模式:啥时候应该使用单例?

Java设计模式之单例模式