![](/img/trans.png)
[英]Vuex - Computed property based on a modules state does not update on dispatch?
[英]why state property is not displaying value from computed in VUEX project?
在使用 VUEX 构建 VUE 项目时。 我没有从 todos.js VUEX 模块中定义的 state 获取属性,而是获取 VUEX 存储中定义的正常属性。 我使用了模块并分离了文件。
HTML
<div> isLoading: {{ isLoading }} </div> // isLoading:
<div> isValid: {{ isValid }} </div> // isValid: true
计算
computed: {
isLoading() {
const loading = this.$store.state.isLoading;
console.log(loading);
return loading;
},
isValid() {
const valid = this.$store.state.isValid;
console.log(valid);
return valid;
},
},
维克斯商店
import Vue from 'vue';
import Vuex from 'vuex';
import todos from './modules/todos';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
isValid: true,
},
getters: {
},
mutations: {
},
actions: {
},
modules: {
todos,
},
});
todos.js
const state = {
isLoading: true,
};
export default {
state,
};
OUTPUT
isLoading:
isValid: true
isLoading 不显示为真,但 isValid 显示为真。 我不明白这种行为,我已经阅读了文档并且找不到任何东西。
尝试添加模块名称
computed: {
isLoading() {
const loading = this.$store.state.todos.isLoading;
console.log(loading);
return loading;
}
},
您可以使用 vuex 辅助功能,例如mapState
import { mapState } from "vuex";
...
computed: {
...mapState("/todos", ["isLoading"])
}
或者
computed: {
...mapState({
isLoading: state => state.todos.isLoading
})
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.