【问题标题】:Vuex: when to use state versus getters?Vuex:何时使用状态与吸气剂?
【发布时间】:2018-07-10 03:04:49
【问题描述】:

从 Vuex 检索数据时,在某些情况下,使用 getter 和直接访问状态之间的选择非常明确。例如:

  • 如果我要检索一个简单的标量,例如 count 变量的值,那么直接访问状态似乎是有意义的
  • 但是,如果我要检索经过过滤的项目列表,那么 getter 是明确的选择。

但是对于检索值只需要少量逻辑的其他情况呢?例如,如果我的商店根目录中有一个foo 对象,并且:

  • 我想检索诸如 foo.option 之类的值,但我不确定它是否存在。我通常会使用三元运算符来检查值是否存在,然后返回值或返回 null。
  • 我想检索 foo.date,但 date 是一个字符串,所以我想把它转换成一个时刻。

使用mapState 函数可以满足这些需求中的任何一个,但我应该使用mapGetter 来代替吗?有什么区别?

【问题讨论】:

  • 在您的 foo 对象情况下,我会继续使用状态。取决于您使用的位置,您可能需要不同的用例。例如,模板中的日期显示显然是vue过滤器。但是 foo.option 可能是一个逻辑值,因此您可以使用一些实用程序库(如 lodash)来简化您的对象。

标签: vue.js vuex


【解决方案1】:

这些需求中的任何一个都可以使用 mapState 函数来满足

没错...但是如果超过 1 个组件需要“稍微改变”的值会怎样?你最终会得到重复的逻辑。在这种情况下,在 getter 中执行“少量逻辑”。

【讨论】:

  • 嗨@EricGuam,我把mapState逻辑放在一个单独的文件中,所以没有重复。
猜你喜欢
  • 2017-10-18
  • 2019-11-26
  • 2017-10-11
  • 2018-04-05
  • 2021-06-01
  • 2023-02-02
  • 2021-03-01
  • 2022-01-20
  • 1970-01-01
相关资源
最近更新 更多