vue.js - [Vue 警告]:属性或方法“stateSidebar”未在实例上定义,但在渲染期间被引用
问题描述
我知道这似乎是一个很容易找到的问题,但我的代码前段时间有效。我正在使用 Vuex 绑定来检查我的侧边栏是否应该可见,所以stateSidebar
应该在我的整个项目中设置。
默认.vue
<template>
<div>
<TopNav />
<SidebarAuth v-if="stateSidebar" />
<Nuxt />
</div>
</template>
<script>
import TopNav from './partials/TopNav';
import SidebarAuth from './partials/SidebarAuth';
export default {
components: {
TopNav,
SidebarAuth
},
methods: {
setStateSidebar(event, state) {
this.$store.dispatch('sidebar/setState', state)
}
}
}
</script>
商店/sidebar.js
export const state = () => ({
stateSidebar: false
});
export const getters = {
stateSidebar(state) {
return state.stateSidebar;
}
};
export const mutations = {
SET_SIDEBAR_STATE(state, stateSidebar) {
state.stateSidebar = stateSidebar;
}
};
export const actions = {
setState({ commit }, stateSidebar) {
commit('SET_SIDEBAR_STATE', stateSidebar);
},
clearState({ commit }) {
commit('SET_SIDEBAR_STATE', false);
}
};
插件/mixins/sidebar.js
import Vue from 'vue';
import { mapGetters } from 'vuex';
const Sidebar = {
install(Vue, options) {
Vue.mixin({
computed: {
...mapGetters({
stateSidebar: 'sidebar/stateSidebar'
})
}
})
}
}
Vue.use(Sidebar);
nuxt.config.js
plugins: ["./plugins/mixins/validation", "./plugins/axios", "./plugins/mixins/sidebar"],
解决方案
如果你正在创建一个 mixin,它应该在/mixins
So 例如/mixins/my-mixin.js
。
export default {
// vuex mixin
}
然后像这样导入default.vue
<script>
import myMixin from '~/mixins/my-mixin`
export default {
mixins: [myMixin],
}
这不是plugins
应该使用的。而且 IMO,你应该明确地在这里做一些更简单和更短的东西,使用更少的样板,并且不会在 vue3(mixins)中被弃用。
这是 IMO 推荐的使用方式
<template>
<div>
<TopNav />
<SidebarAuth v-if="stateSidebar" />
<Nuxt />
</div>
</template>
<script>
import { mapState } from 'vuex'
export default {
computed: {
...mapState('sidebar', ['stateSidebar']) // no need to use object syntax nor a getter since you're just fetching the state here
},
}
</script>
没有mixin,没有插件入口。
推荐阅读
- store - rsyslog:存储和转发已转发到此服务器的日志
- python - PyQt QSortProxyModel - 是否需要显示列才能排序?
- sql - 在 Postgres 中创建了一个事件触发器但没有显示?
- matlab - Matlab写入文件或转换为矩阵
- python - Python:“无法关闭正在运行的事件循环”Asyncio
- docker - 具有非匿名 authLevel 的 Docker 中的 Http 触发 Azure 函数
- ansible - Ansible nested loops through inventories
- c++ - 在 C++ 构造函数中使用随机字符串生成器
- python-3.x - 使用 scipy 的 welch 函数在 pycharm 中出现内存错误
- python - 如何使用 PyMongo 使用对象插入多个字典值