【问题标题】:How to get data from store?如何从存储中获取数据?
【发布时间】:2021-04-15 21:09:48
【问题描述】:

如何使用 vuejs 从 vuex 存储中获取数据?

这是我的代码: index.js

Vue.use(Vuex);

export default new Vuex.Store({
    modules: {
        data
    }
})

数据.js

import axios from 'axios';

const state = {
    data: ''
};

const getters = {
    getData: (state) => {
        return state.data;
    }
};

const actions = {
    async fetchData({ commit }, { id }) {
        const response = await axios.get(`http://someUrl?id=${id}`);
        console.log(response.data);
        commit('setData', response.data);
    }
}

const mutations = {
    setData: (state, data) => (state.data = data)
}

export default {
    state, getters, actions, mutations
}

我要获取此数据的 Vue 文件:

<script>
  import FooterComponent from "@/components/Footers/Footer.vue";

  import { mapGetters, mapActions } from 'vuex';

  export default {
    data() {
      return {
        id: ""
      }
    },
    name: "Index",
    methods: {
      ...mapActions(["fetchData"]),
      launchFetchData() {
        this.fetchData({ id: this.id})
        this.$router.push("login");
      }
    },
    computed: mapGetters(["getData"])
  }
</script>

那么,如何在不同的 vue 文件/模板上显示来自 vuex 存储的数据?

感谢您的帮助

【问题讨论】:

  • 你在哪里导入你的 index.js ?

标签: javascript typescript vue.js vuex


【解决方案1】:

在计算属性中定义 mapGetter 时,您错过了扩展运算符和大括号

computed: {
    ...mapGetters(["getData"])
}

在此之后,您可以使用任何方法中的“this”运算符访问 getter

例如:

methods: {
 sample() {
   console.log(this.getData);
 }
}

【讨论】:

  • @svelteDev - 太棒了!如果它对您有用并且您很高兴-那么通常您会接受答案。这不仅会帮助其他人解决同样的问题,而且还意味着人们将来更有可能帮助您解决您遇到的任何其他问题。您可以在此处阅读有关接受的信息:stackoverflow.com/help/accepted-answer
猜你喜欢
  • 1970-01-01
  • 2016-10-21
  • 2019-08-14
  • 1970-01-01
  • 2013-03-04
  • 2014-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多