Vuex可正常识别getters但无法识别actions与mutations问题求助
问题原因及修复方案
核心原因:重复实例化Vuex.Store导致配置丢失
你的store.js最终导出的已经是已经实例化完成的Vuex.Store对象,但你在app.js中又将它作为配置参数传入了新的Vuex.Store构造函数,相当于嵌套生成了一个新的空Store,新Store并没有注册你定义的actions、mutations,因此会提示找不到对应类型。
修复方法
修改app.js中store相关的代码,直接导入使用store.js导出的实例即可,无需重复实例化:
// app.js修改对应部分 require('./bootstrap'); window.Vue = require('vue').default; import Vuex from "vuex"; Vue.use(Vuex); import store from "./store"; // 直接导入已完成实例化的store Vue.component('home', require('./components/Home.vue').default); const app = new Vue({ el: '#app', store });
其他可优化问题
- action中axios调用错误:Vuex的action内部this不指向Vue实例,直接调用
this.$axios会报错。如果你已经将axios挂载到Vue原型上,可以修改为Vue.prototype.$axios.get('getMembers'),或者直接在store.js中导入axios使用。 - getters冗余写法:当前你定义的getter返回的是一个函数,属于高阶getter的写法,常规场景下无需这么写,可以简化为:
// store.js修改getters配置 export const getters = { members: state => state.members };
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

