【发布时间】:2019-11-04 08:27:42
【问题描述】:
我正在尝试使用 vuex 的商店进行一些 API 调用,但在安装 vuex、将商店导入我的文件并遵循其他堆栈溢出答案之后,例如确保安装了 vuex,如果我使用“Vuex. Store”等,但我的 loadCalls 功能仍然无法正常工作。
这是我得到的错误:
this.$store.loadCalls is not a function
这是我的函数以及我尝试调用它的方式,它在我的 store.js 文件的 ACTIONS 部分中声明。
loadCalls() {
axios
.get("/some/calls")
.then(res => {
console.log(res)
});
},
当我的组件加载时,我尝试在我的beforeMount() 中使用它:
beforeMount(){
this.$store.loadCalls();
}
我在这里做错了什么?
【问题讨论】:
-
也许,您忘记在 Vue 实例中包含 store。
import store from './store'在哪里? -
在我的 main.js 文件中。我在这里也定义了:new Vue({ router, store, render: h => h(App), }).$mount('#app')
-
请注意,mounted 并不能保证所有子组件也已安装。如果你想等到整个视图被渲染,你可以在mounted里面使用
vm.$nextTick:见:vuejs.org/v2/api/#mounted -
您商店的
actions部分是否定义了loadCalls? -
是的,它在我的商店文件的我的操作部分中