vuex Cannot read property 'dispatch' of undefined

发布于 2022-09-12 03:07:38 字数 361 浏览 14 评论 0

vuex 使用this.$store.dispatch()改变vuex的值,
报错Cannot read property 'dispatch' of undefined问题

首先定义好且引入正确了,我在普通的组件中,调用
this.$store.dispatch('zipFileType','.doctype')能够正确把这个值改成‘.doctype’

然后我在一个vtip弹层中,也想调用这个方法,却报上面那个错了。这个vtip是一个鼠标经过才显示的弹层组件(vtip插件),跟这个会有原因吗?

代码是确的,就是在这个插件弹层里调用$store.dispatch()就不行,请问下是什么原因呢,又该如何解决呢?感激不尽

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

九命猫 2022-09-19 03:07:38

将store注入app应用一般是在main.js

import store from '@/store'
import App from '@/App.vue'

new Vue({
    store,
    render: h => h(App)
    //...other code
})

在这个实例以及它的后代组件中,就都被注入了$store.

但有些组件,并不是这个实例的后代,一般是一些弹窗之类的,在他们实例中,就无法获取到$store.

检查你的vtip插件,是否是单独new的vue实例.
如果是单独new的,
可以直接引入store,替换原来的this.$store

import store from "@/store"

export default {
// ...other code
    methods: {
        someMethod() {
            // -- this.$store.dispatch('xxx')
            store.dispatch('xxx')
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文