Javascript 如何从nuxt.js商店访问插件?
我有这个gtag分析插件,我可以访问我的组件,但从来没有在我的商店。 如果您有任何意见,我将不胜感激。谢谢 插件/vue-gtag.jsJavascript 如何从nuxt.js商店访问插件?,javascript,vue.js,vuex,nuxt.js,gtag.js,Javascript,Vue.js,Vuex,Nuxt.js,Gtag.js,我有这个gtag分析插件,我可以访问我的组件,但从来没有在我的商店。 如果您有任何意见,我将不胜感激。谢谢 插件/vue-gtag.js import Vue from "vue" import VueGtag from "vue-gtag" export default ({ app }, inject) => { Vue.use(VueGtag, { config: { id: process.env.ga_stream
import Vue from "vue"
import VueGtag from "vue-gtag"
export default ({ app }, inject) => {
Vue.use(VueGtag, {
config: {
id: process.env.ga_stream_id
}
})
}
store/gaUserProperty.js
import Vue from "vue"
import { User } from "~/models/user/User"
export const states = () => ({})
const getterObjects = {}
const mutationObjects = {}
Object.keys(states).forEach(key => {
getterObjects[key] = state => state[key]
mutationObjects[key] = (state, value) => (state[key] = value)
})
export const state = () => states
export const getters = { ...getterObjects }
export const mutations = { ...mutationObjects }
export const actions = {
async sendUserProperties({ dispatch, commit }) {
let res = await this.$UserApi.getUser()
if (!(res instanceof User)) {
} else {
// I can access this on my components and pages but for some reason not here....
console.log(this.$gtag)
}
}
}
您可以通过此访问Vue实例。\u Vuex存储中的虚拟机,因此您只需执行以下操作: console.logthis._vm.$gtag
这应该可以解决问题。要正确导入,我将从main.ts|js导出实例或其任何内部构件: 现在,您可以在商店中导入它:
import Instance from '@/main';
// or:
import { $gtag } from '@/main';
// use Instance.$gtag or $gtag, depending on what you imported.
正如其他答案所提到的,在当前的Vuex版本中,Vue实例在存储区内的这个虚拟机下可用。不过,我不想依赖它,因为它不是公开的Vuex API的一部分,也没有任何文档记录。换句话说,Vuex开发人员不能保证它在将来的版本中仍然存在。
更具体地说,Vue的承诺是所有v2代码都将在v3中工作。但前提是使用公开的API
这里的讨论甚至不是关于它是否会被删除,它很可能不会被删除。对我来说,这更多的是一个原则问题:如果它以a开头,并且没有文档记录,那么它将转化为作者的一条信息:我们保留随时更改此内容的权利,恕不另行通知 你能说出nuxt中main.js的等价物吗?我找不到一个:从Vue导入Vue从Vue gtag Vue.USEVUEGTTAG导入VUEGTTAG,{config:{id:process.env.ga_stream_id}}导出默认ctx,inject=>{ctx.$gtag=Vue.$gtag injectgtag,Vue.$gtag injectgtag,Vue.$gtag}它工作得很好,但文档中没有它这一事实让我担心。还有其他方法吗?@obliviousfella它是Vue.js的内部属性,因此它实际上没有文档记录,但它是Vue.js核心功能的一个元素。我知道其他答案中的观察结果,但我也是接吻原则的拥护者,但无论如何,我想这是一个选择哪种解决方案更适合你的特殊需要的问题。
import Instance from '@/main';
// or:
import { $gtag } from '@/main';
// use Instance.$gtag or $gtag, depending on what you imported.