我对 vuex 模块有点困惑。
我有一个 Vue 组件,它显示在搜索页面上:
<template>
<div v-if="filtersPanelActive">
Filters panel
</div>
</template>
<script>
import { mapState } from "vuex";
export default {
computed: {
...mapState(["filtersPanelActive"])
},
methods: {}
};
</script>
然后我有一个 store.js
import Vue from "vue";
import Vuex from "vuex";
import searchPage from "./modules/searchPage.js";
Vue.use(Vuex);
const store = new Vuex.Store({
modules: {
artPage,
legalsPage,
searchPage
}
});
和一个搜索页面商店:
const searchPage = {
state: {
filtersPanelActive: false
},
actions: {},
mutations: {
toggleFilters(state) {
state.filtersPanelActive = !state.filtersPanelActive;
}
},
getters: {}
};
export default searchPage;
但没有什么是完全有效的......在我的 vuex 开发工具中,我有以下内容:
{
"artPage":{
"startDate":false,
"endDate":false,
"confirmBooking":false
},
"legalsPage":{
"filesUploaded":[
]
},
"searchPage":{
"filtersPanelActive":false
}
}
但是当我检查 Vue 组件时,它显示以下内容:
为什么我会不确定?我对 vuex、命名空间、模块等有点不知所措,所以请随意过度解释......
在我使用的另一个组件中
this.$store.commit("toggleFilters");
值得注意的是,这“有效”——在 vuex 状态从true
变为 时false
,但我mapState
仍然没有完成任何事情。因此该模块似乎已正确加载。