在mapActions()中找不到Vuex模块命名空间

kam*_*ila 4 vue.js vuex vuejs2

我在尝试从我的商店调用操作时收到以下错误:

[vuex] 在 mapActions() 中找不到模块命名空间:feedbacksessionStore/

从我在网上发现的其他解决方案中,人们建议设置“namespaced: true”,但它对我的情况没有帮助。

这是我的商店代码片段:

export const feedbackSessionStore = {
    namespaced: true,

    state: {
        feedback_sessions: {},
    },

    actions: {

        async createFeedbackSession({commit, state}, { data }) {
          // some code
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

以及组件代码片段:


import { mapGetters, mapState, mapActions } from 'vuex'

// some code

export default {
  name: 'create-edit-feedback-session',
  methods: {
    ...mapActions('feedbackSessionStore', [
        'createFeedbackSession'
    ]),
    // some code
}
Run Code Online (Sandbox Code Playgroud)

小智 7

为了解决这个问题,你必须做两件事:

  1. 通过在 store/modules 目录中执行以下代码,将“feedbackSessionStore.js”创建为单独的模块:

    namespaced: true,
    
    state: {
        feedback_sessions: {},
    },
    
    actions: {
    
        async createFeedbackSession({commit, state}, { data }) {
          // some code
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将此模块添加到 store/index.js 中,如下所示:

    import * as feedbackSessionStore from "@/store/modules/feedbackSessionStore.js";
    
    Run Code Online (Sandbox Code Playgroud)

经过这两个步骤,它应该可以工作。