【发布时间】:2020-09-08 13:12:24
【问题描述】:
我尝试将抽屉数据存储在 VueX 中以在外部组件上使用它。
我的控制台错误:[vuex] unknown action type: app/switchDrawer
我的 VueJS 模板:
pages/test.vue
<template>
<v-navigation-drawer v-model="drawer" app>
<v-list dense>
...
</v-list>
</v-navigation-drawer>
</template>
<script>
export default {
computed: {
drawer: {
get () {
return this.$store.state.app.drawer
},
set (value) {
console.log(value);
return this.$store.dispatch('app/toggleDrawer', value)
}
}
}
}
</script>
console.log() 函数在控制台循环中给了我很多行。
我也想使用 VueX 的 mapGetters 类来代替计算 get/set:
computed: mapGetters({
drawer: 'app/drawer'
})
我在控制台中有一个错误:
[Vue 警告]:计算属性“抽屉”已分配给但它没有 二传手。
我的 VueX 商店:
store/app.js
export const state = () => ({
drawer: true
})
export const getters = {
drawer: state => state.drawer
}
export const mutations = {
TOGGLE_DRAWER: (state) => {
state.drawer = !state.drawer
}
}
export const actions = {
toggleDrawer ({ commit }, value) {
commit('TOGGLE_DRAWER', value)
}
}
【问题讨论】:
-
你的模块是
namespaced吗?如果不是,那么映射的工作方式会有所不同computed: { ...mapState({ drawer: state => state.FilenameOfYourModule.drawer })}。另一个问题可能是您的突变和吸气剂的命名不同 - 我将它们命名为完全相同 - 但毕竟这只是一个警告。 -
@Hexodus 使用这种方法,我得到这个错误:
Computed property "drawer" was assigned to but it has no setter. -
好吧,我的错,它不能用于双向绑定 - 忽略了你也需要一个 setter。
标签: vue.js vuex vuetify.js nuxt.js