首页 > 技术文章 > vuex 派发action进行异步获取数据

junwu 2019-07-16 16:15 原文

在vuex里 我想统一管理异步的操作,受到redux-thunk的启发,可以让vuex派发action,在action执行异步请求axios,在把异步获取的数据到mutation,但感觉这么做会把接口数据跟state绑定,感觉还是按照具体环境灵活应用较好。

假如我组件的mounted 有这么个获取接口数据的方法 getGene

getGene(){
      this.$store.dispatch('getGeneAction');
      //getDatamingData().then(this.getGeneSucc);
      /*
      axios.get(urlApi.datamining)
           .then(this.getGeneSucc);
      */
    },

*注释掉的是以前直接在方法中获取接口数据

在我的store里actions.js

getGeneAction(ctx,item){
    console.log('getGeneAction');
    //调用axios
    getDatamingData().then((res) => {
      ctx.commit('GETGENEMUTATION',res);
    });
  }

派发一个GETGENEMUTATION mutation

GETGENEMUTATION(state,item){
    //console.log(item.data.obj);
    state.geneObj = item.data.obj;
  }

这样就有了一个vuex

 

我之前的做法是在父组件获取异步数据 然后把数据再派发给子组件 子组件在对数据进行vuex操作 。

 

 具体如何管理数据还是看具体的环境。

 

推荐阅读