我遵循Vuex指南中的示例代码,得到了一个奇怪的结果(至少对我来说是这样)。
Vuex商店
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
name: ""
},
mutations: {
updateName(state, newName) {
state.name = newName;
}
},
getters: {
getName: state => state.name
}
});
export default store;
组件,在<script>
标记中:
import { mapGetters } from "vuex";
export default {
name: "Home",
data: function() {
return {
showingName: true
};
},
computed: {
...mapGetters(["getName"])
},
methods: {
getNameHandler() {
// eslint-disable-next-line
console.log(this.$store.getters.getname); // returns undefined
}
}
};
下面是一个实时示例:https://codesandbox.io/s/yww774xrmj
基本上,问题是,为什么console.log
未被引渡返回?通过单击Home组件中的按钮可以看到这一点。我遵循的模式与Vuex官方指南中显示的相同:
https://vuex.vuejs.org/guide/getters.html#property-style-access
除非我缺少一个导入或Vue.use()
,但吸引我注意的是,使用“mapGetters”实际上允许我使用getter作为计算属性。可以使用About组件中的按钮更改状态的name属性。
发布于 2018-09-27 16:28:17
getter名称区分大小写。
this.$store.getters.getName
你有
this.$store.getters.getname
发布于 2019-05-02 04:03:56
https://stackoverflow.com/questions/52546083
复制