【问题标题】:Store doesn't recognize my modules and shows no errors商店无法识别我的模块并且没有显示错误
【发布时间】:2020-08-23 05:37:24
【问题描述】:

我的 VueJS 应用程序中有一个 store.js 文件,但它有点太大了,所以我尝试为它创建一些模块。但是我不确定我做错了什么,因为我的一个模块文件正常工作,而另一个没有做任何事情并且没有显示任何错误,我的组件根本不显示。

我所有的模块文件如下:

const myModule= {
  state: {
    myState: false
  },
  mutations: {
    myMutation (state){
      return state.myState= true;
    }
  },
  actions: {
    myAction({ commit }) {
      // what i need to be done
    }
  },
  getters: {
    myState( state ) {
      return state.myState;
    }    
    }
  }

  export default myModule;

然后我将它们导入到我的 store.js 文件中,如下所示:

import myModule from '@/modules/myModule'

const store = new Vuex.Store({
  namespaced: true,
  modules: {
    loginModule
  },

我已经尝试使用他们的状态和动作如下

this.$store.dispatch('myAction').myModule
this.$store.getters['myModule/myState']

但是,只有我创建的第一个模块文件可以工作,而其他的没有,而且它们都具有相同的结构并且没有显示错误。不知道这里出了什么问题。

编辑:显然这些动作正在起作用,但我的吸气剂却没有。

【问题讨论】:

  • 你能在 Vue DevTools 中检查 getter 吗?
  • 检查错误。我主要使用的是 console.log() ,显然由于某种原因它们都被认为是未定义的。
  • 它们在 vue devtools 上显示
  • 包括那些无法访问的?
  • 是的。我想我想通了。显然我没有命名我的模块,因此只有这些操作出于某种原因才起作用。

标签: module vuex store


【解决方案1】:

据我所知,您不需要对商店进行命名空间。

https://vuex.vuejs.org/guide/modules.html#accessing-global-assets-in-namespaced-modules

您最喜欢将模块命名为命名空间。

然后您可以使用 mapGetters、mapState、mapMutations、mapActions 轻松访问您的属性

【讨论】:

  • 我不需要使用地图操作等,我只需要使用 'moduleName/actionName 来代替。
猜你喜欢
  • 1970-01-01
  • 2012-01-09
  • 1970-01-01
  • 2014-10-18
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2018-03-24
  • 2021-05-17
相关资源
最近更新 更多