【问题标题】:Creating Vuex getters dynamically from database data从数据库数据动态创建 Vuex getter
【发布时间】:2020-05-11 01:34:40
【问题描述】:

我正在尝试根据数据库数据动态创建 Vuex getter。

数据库表中有两列很重要。一列是 getter 名称,第二列是 getter 内容。 getter 将引用的状态值在创建时已经加载到存储中,所以这不是问题。

我已经阅读了有关创建模块和注册它们的信息,但在所有情况下,我都看到它们仍然必须进行硬编码。有没有办法使这项工作?

我还在考虑是否最好将 Vuex 模块中的 getter 及其关联的状态值作为字符串存储在数据库中,然后将它们取出并注册。

你会采取什么方法?

提前致谢。

【问题讨论】:

  • Vuex getter 用于基于商店计算价值。我不会用它们来访问状态数据。您可以为此访问状态本身。
  • 感谢詹姆斯的回复。我将在这些吸气剂中执行计算。不过,您是绝对正确的,这就是我只需要返回状态数据时会采用的方法。

标签: vue.js vuex vuex-modules


【解决方案1】:

对于任何处于类似情况的人,我最终导入了一个空的 vuex 模块并将其缓存到一个变量,分配新的 getter 函数然后注册它,类似于这样:

import emptyVuexModule from 'emptyModule'

let cachedModule = emptyVuexModule

cachedModule.getters[getterName] = new Function(['state'], getterContents)

this.$store.registerModule(cachedModule)

我不知道这是否是最好的解决方案,而且我知道使用 new Function 会带来安全问题,但它可以满足我的需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 2021-09-30
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    相关资源
    最近更新 更多