首页 > 解决方案 > 从数据库数据动态创建 Vuex getter

问题描述

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

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

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

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

你会采取什么方法?

提前致谢。

标签: vue.jsvuexvuex-modules

解决方案


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

import emptyVuexModule from 'emptyModule'

let cachedModule = emptyVuexModule

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

this.$store.registerModule(cachedModule)

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


推荐阅读