Ваш синтаксис computed...mapState
правильный, поэтому, скорее всего, проблема в том, как вызывается мутация заполнения. Вы называете пространство коммитом?
Это рабочий пример .
Единственное, что нужно изменить, это state: initialState
должно быть state: Object.assign({}, initialState)
.
Первый способ устанавливает состояние для ссылки на объект initialState
, поэтому любые изменения в мутации заполнения перезаписывают значения initialState
, и мутация сброса не будет иметь никакого эффекта.
Компонент
export default {
...
computed: {
...mapState("guest", {
email: state => state.email
})
},
mounted() {
// Call the fill mutation with namespace
this.$store.commit("guest/fill", {
email: "some@email"
});
// Call reset after 2 seconds
setTimeout(() => {
this.$store.commit("guest/reset");
}, 2000);
}
магазин
const initialState = {
name: "dummyName",
email: "dummy@initial" // put a value here so we can see if mapState works
};
const store = new Vuex.Store({
modules: {
guest: {
namespaced: true,
state: Object.assign({}, initialState),
mutations: {
fill(state, data) {
Object.assign(state, data);
},
reset(state) {
Object.assign(state, initialState);
}
}
}
}
});