【发布时间】:2021-12-07 03:17:33
【问题描述】:
我将自定义全局变量注入 vue。你可以看下面的代码。
export default function (props, inject) {
inject('models', {
register(name) {
const model = require(`@/models/${name}.js`)
model.default(props, inject)
}
})
}
这行得通,我使用它没有问题,唯一的问题是在将它们加载到 vuex 商店时。我正在使用 Nuxt.js,其中商店与 vue.js 有点不同,但它的工作原理几乎相同。 我在 store 文件夹 中的 products.js 如下所示:
export const state = () => ({
products: [],
})
export const getters = {
get_product: state => async id => {
let loadedProduct = state.products.find(p => p.id == id)
let isAllreadyLoaded = loadedProduct != null ? loadedProduct : false
if(isAllreadyLoaded)
{
return loadedProduct
}
else
{
let fetchedProduct = await this.$products.find(id)
return fetchedProduct
}
}
}
我只是先检查我是否已经在缓存中拥有该产品,如果是,我想退回该产品,否则我想获取一个产品。 但是,我在 this.$products 上遇到了错误。错误说:
TypeError: Cannot read properties of undefined (reading '$products').
这就是我访问我的商店的方式:
async asyncData({store, params, $products}) {
let product = await store.getters['products/get_product'](params.id)
return {
product
}
},
我已经尝试在 vuex 商店中使用 Vue.prototype.$products 而不是 this.$products,但不幸的是这并没有帮助。有什么解决办法吗? 我需要在 vuex 商店中使用一个全局变量
【问题讨论】:
标签: javascript vue.js vuejs2 vuex