可以把ajax请求的数据存到vuex的state里面吗?

需求:

我有一组数据通过ajax请求而来,但多个组件内都有用到。
我应该怎么做让这组数据任何组件都能用到呢?

vuex理解不多。

现有Code:

store.js
let actions = {
    updateLoopImg (context) {
        context.commit('getLoopImg');
    }
}

let mutation = {
    getLoopImg(state) {
        this.axios.get("api/setting/get_loop_img")
            .then(res => {
                state.loop_sec = res.data.loop_sec;
                state.loop_img = res.data.data.loop_img;
            })
    }
}

// ------------------------------------------- 
a.vue
this.$store.dispatch("updateLoopImg");

// -------------------------------------------
error:
vuex.esm.js?edaa:364 [vuex] unknown mutation type: getLoopImg

感谢大佬的回答

阅读 5k
1 个回答

你可以指定一个Mutation 在其中发起ajax 然后拿到了res之后就state.xx = res

接下来在某个你需要的hook里commit一下这个mutation 去驱动他

之后就可以在组件内部 this.$store.state.xx 获取到这个数据 很简单的 如果你需要异步的一些操作就需要actions

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