【问题标题】:Is defining all flux action types in a constants object is a common practice?在常量对象中定义所有通量动作类型是一种常见的做法吗?
【发布时间】:2018-07-27 06:22:00
【问题描述】:

这个问题是基于the article关于通量的。

一种常见的做法是在一个常量对象中定义所有动作类型,并在整个应用程序中引用该对象以保持一致性。

常见做法是什么意思?我的意思是为什么作者认为这是一种常见的做法?它的依据是什么? 真相来源是什么?如果我决定使用小写的动作类型呢?

【问题讨论】:

  • 这基本上意味着开发人员想出了一些有助于开发和维护的约定。

标签: javascript reactjs flux reactjs-flux


【解决方案1】:

Flux 是一种设计模式,而不是特定的库或实现。当应用程序的大小和复杂性增加时,这种模式有助于处理状态。

例如:考虑一个用于管理电子邮件的应用程序,当单击电子邮件时,我们将有以下 状态 变化:

  • 将“收件箱视图”(电子邮件列表)替换为“电子邮件视图”。
  • 将电子邮件标记为本地已读
  • 在本地减少总未读计数器
  • 更改浏览器的网址
  • 发送 Web 请求以在服务器上将电子邮件标记为已读

处理用户点击电子邮件的顶级组件中的函数必须描述所有发生的状态变化。这会加载具有很多复杂性和责任的单个函数。

Redux 是 Fl​​ux 的一个概念,解决问题的关键思路如下:

  • 您应用程序的所有数据都在一个名为 state 的数据结构中,该结构保存在存储中。
  • 您的应用从该商店读取状态。
  • state 永远不会直接在 store 之外发生变化。
  • 视图发出描述所发生情况的操作。
  • 一个新的 state 是通过组合旧的 state 和一个名为 reducer 的函数的操作来创建的。

Store 是一个对象,它保存了应用程序中的所有(或至少大部分)状态。它将在顶级组件中创建和实例化。它的实例将被所有子组件访问。

看看 Store 概念与您的引用有多相似:

"... 在常量对象中定义所有动作类型并引用它 对象而不是跨应用程序以保持一致性。”

【讨论】:

  • 谢谢。我认为您的帖子是为了展示一些知识,而不仅仅是给出答案。你根本没有给它。
  • 它的另一个方便用途是,您可以为每个操作使用长的、描述性的、不太可能重复的字符串,同时根据需要重新使用某些调用。知道“store1Actions.add”是什么很直观,您仍然可以说“store2Actions.add”,但是如果您对 add 属性的实际值很了解,则不必担心重叠。我倾向于让我的动作加长以避免潜在的重叠,因为这是一个令人讨厌的问题。类似“ADD_A_VALUE_TO_STORE_NUMBER_1”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
相关资源
最近更新 更多