如何在vue组件中使用vuex?

nag*_*hun 12 vue.js vuex

我有一个vuex示例项目:

app.vue:

<template>
    <div>{{message}}</div>
</template>

<script>
import store from "./app.store.js";

export default {
    computed: { message: () => store.message }
}
</script>
Run Code Online (Sandbox Code Playgroud)

app.store.js:

import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

const state = { message: "Hello World" };
const getters = { message: state => state.message };
const store = new Vuex.Store({ state, getters });

export default store;
Run Code Online (Sandbox Code Playgroud)

{{message}}占位符替换为空字符串而不是"Hello World".如何在vue组件中使用vuex?

8bi*_*bit 11

首先,确保在Vue实例中包含商店,如下所示:

new Vue({ el: '#app', store });
Run Code Online (Sandbox Code Playgroud)

此外,在计算属性中,不要直接访问商店(尽管它完全没问题),请使用您创建的getter.

现在,当您在Vue实例中注入商店时,它会自动供所有子组件使用 - 这意味着您无需导入它,而只需在组件中使用它:

computed: { return this.$store.getters.message }
Run Code Online (Sandbox Code Playgroud)

您可以在此处详细了解该主题.

  • 将商店对象传递给Vue构造函数会使组件中的"this.$ store"变量可用.但是,我更喜欢使用箭头函数,其中"this"引用不可用 - 所以我在每个vue组件中导入存储.Vue构造函数中的store对象是可选的.我的代码的问题是缺少.getters引用. (3认同)
  • 哦,我的天哪@nagy.zsolt.hun,我一直在互联网上敲我的头,试图找出为什么提交不作为 this.$store 的属性存在然后我在您发表评论后想起了箭头函数没有包括“这个”!我用的是 count: () =&gt; { 而不是 count () { 你是最棒的! (2认同)