vuex跟vue结合,怎么实现data钩子函数异步 resolve?

我有一个vue项目是vuex 跟vue routervue resource结合的,然后我有一个列表是从服务器异步获取数据再显示的,我在vue组件的routedata钩子函数中要调用一个vuexaction获取数据,action是用vue resource写的

代码如下:
home.vue

<div v-if="$loadingRouteData">loading...</div><div v-else>
    <list v-for="item in list">list...</list>
   </div>
vuex: { 
   getters: {      
     list: listGetters
    },  
      actions: {
       
        getList
    }
},
route: {
    data () {     
       this.getList();
    }
},

actions.js

export const getList= ({dispatch}) => {
    api.getList().then(response => { 
           if (!response.ok) {       
                return dispatch('GET_LIST_FAILURE');
        } else {
            dispatch('GET_LIST_SUCCESS', { list: response.list });
        }
    }, response => {
        dispatch('GET_LIST_FAILURE');
    })
}

我看vue router的文档说要在data钩子函数里面返回一个promise,但我的getList是包含一个vue resource的promise的,但是我在data钩子函数里如上面代码直接调用的话是同步resolve的,怎么实现在数据获取之后变为resolve?


莫回无
浏览 3376回答 2
2回答

慕哥6287543

看上去,你的data并没有按照官网的说明写哦:你的data里没有return你的getList也没有返回promise至于其它什么“但是我在data钩子函数里如上面代码直接调用的话是同步resolve的”,没看懂什么意思
打开App,查看更多内容
随时随地看视频慕课网APP