vuex数据更新有延迟,求解?

store/module/work.js

import * as types from '../mutation-types'
import * as api from '@/api/work.js';
const state = {
    flowTypeListData:[],
}
const getters = {
    flowFormData: state => state.flowFormData,
}
const actions = {
    //分类列表
    getFlowTypeList({ commit }) {
        api.getFlowTypeList().then(response => {
            commit(types.FLOW_TYPE_LIST, response.data)
        })
    },
    //新增分类
    addFlowType({ commit }, data) {
        api.addFlowType(data).then(response => {
            commit(types.ADD_FLOW_TYPE, response.data)
        })
    }
}
const mutations = {
    [types.FLOW_TYPE_LIST](state, data) {
        state.flowTypeListData = data;
    },
    [types.ADD_FLOW_TYPE](state, data) {
        if(data == 1){
            console.log("创建成功");
        }else{
            console.log("创建失败");
        }
    },
}
export default {
    state,
    getters,
    actions,
    mutations
}

views/type.vue

import { mapActions, mapGetters } from "vuex";
export default {
  data() {
    return {
      formData: {}, 
    }
  },
  created() {
    this.$store.dispatch("getFlowTypeList");
  },
  computed: {
    ...mapGetters({
      data: "flowTypeListData",
    })
  },
  mounted() {},
  methods: {
    save(){
      //提交创建的分类数据
      this.$store.dispatch("addFlowType",this.formData);
      //更新分类列表  ###问题:界面数据没有实时更新,刷新界面数据才在界面上出来
      this.$store.dispatch("getFlowTypeList");
    }
  },

  components: {  }
};

以上代码都可以正常运行,只是有更新延迟问题;

问题:界面数据没有实时更新,刷新界面数据才在界面上出来,我试了好久,然后发现如果在 this.$store.dispatch("getFlowTypeList"); 包裹一个setTimeout 就可以实时更新界面数据,以前不用VUEX的时候没有发现这种问题,大家遇到这种问题吗,如何解决的?

阅读 11.2k
2 个回答

只有加loading了

更新分类列表的action必须等添加分类的action中的异步请求完成后才能dispatch

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题