我试图通过添加类nav-selected
使导航处于活动状态。我见过其他类似问题,但它们与v-model
有关,因此对我没有帮助。
我需要确保将其添加到商店中,以便即使刷新后也始终可以看到哪个页面处于活动状态。但是,我收到以下错误:
Navigation.vue:
<template>
<v-container>
<v-layout align-center>
<!-- Logo -->
<v-flex sm2>
<img src="http://beam.space/img/icon.png" height="30px">
</v-flex>
<!-- Navigation -->
<v-flex sm8>
<v-layout wrap justify-center>
<v-flex sm2>
<router-link to="/myspaces">
<h2 @click="setActiveNav(0)" :class="{'nav-selected': activeNavigation === 0}" class="nav-text">My Spaces</h2>
</router-link>
</v-flex>
<v-flex sm2>
<router-link to="/inspirations">
<h2 @click="setActiveNav(1)" :class="{'nav-selected': activeNavigation === 1}" class="nav-text">Inspirations</h2>
</router-link>
</v-flex>
</v-layout>
</v-flex>
<v-flex sm2>
<p>profile</p>
</v-flex>
</v-layout>
</v-container>
</template>
<script>
import { mapState } from 'vuex';
export default {
name: "navigation",
computed: {
...mapState([
'activeNavigation'
])
},
methods: {
setActiveNav(activeNav) {
this.activeNavigation = activeNav;
this.store.commit('setActiveNavigation', this.activeNavigation);
}
}
}
</script>
<style scoped>
</style>
Store.js:
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);
export default new Vuex.Store({
state: {
activeNavigation: 0
},
getters: {
},
mutations: {
// Set Active navigation on click.
setActiveNavigation(state, id) {
state.activeNavigation = id;
}
},
// actions zijn a sync
actions: {
}
});
答案 0 :(得分:5)
mapState
仅创建吸气剂属性。您无法分配这些属性。
无论如何都无需分配给activeNavigation
,提交将自动更新activeNavigation
的映射值。
更改此:
setActiveNav(activeNav) {
this.activeNavigation = activeNav; // <-- Not allowed
this.store.commit('setActiveNavigation', this.activeNavigation);
}
对此:
setActiveNav(activeNav) {
this.$store.commit('setActiveNavigation', activeNav);
}