【发布时间】:2019-02-15 09:45:20
【问题描述】:
我有一个异步操作 vuex,我使用 map getter 和组件创建的函数来获取和填充数据,如果我在模板视图控制台中使用此存储数据内联对象显示错误未定义,如果我尝试仅在没有内联对象的情况下访问变量 im内联对象出现未定义错误,我认为这个错误是关于异步函数没有阻塞主进程组件完全加载并且在异步函数填充变量之后
动作,状态
// state
export const state = {
app: null
}
// getters
export const getters = {
app: state => state.app,
}
// mutations
export const mutations = {
[types.FETCH_APP_SUCCESS] (state, { app }) {
state.app = app
},
[types.FETCH_APP_FAILURE] (state) {
state.app = null
},
[types.UPDATE_APP] (state, { app }) {
state.app = app
}
}
async fetchApp ({ commit }) {
try {
const { data } = await axios.get('/api/app/1')
commit(types.FETCH_APP_SUCCESS, { app: data })
} catch (e) {
commit(types.FETCH_APP_FAILURE)
}
}
组件
<template>
<div>
{{app.name}}
</div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
middleware: 'auth',
created () {
// i try here async and await
this.$store.dispatch('app/fetchApp')
},
computed: mapGetters({
app: 'app/app'
}),
metaInfo () {
return { title: this.$t('home') }
}
}
</script>
【问题讨论】:
-
我看到你有
app/app但网址是api/app我认为这会产生错误 -
app/app 表示在 app.js 和 state app 下,我可以填充 state,我认为问题不在这里
标签: vue.js vuejs2 async-await vue-component vuex