boolean - Vue.js - 使用 vuex 打开/关闭动态侧边栏,考虑不同的组件(导航栏到侧边栏)

标签 boolean vue.js components vuex state-management

我正在尝试在我的网站上制作动态侧边栏,但菜单按钮位于另一个组件(导航栏)中。我怎样才能让他们通过vuex相互通信?看,我知道如何在同一个组件中执行此操作,但我在这里努力将此 boolean 状态从导航栏传递到侧边栏。

最佳答案

按如下方式定义您的商店: 从“vue”导入 Vue 从 'vuex' 导入 Vuex

Vue.use(Vuex);

export const store = new Vuex.Store({
      state: {
        sideBarOpen: false
    },
    getters: {
        g_sideBarOpen(state){
            return state.sideBarOpen
        }
    },
    mutations: {
        toggleSideBar(state){
            state.sideBarOpen = !state.sideBarOpen;
        }
    },
});

在导航栏组件中单击菜单按钮的监听器

<template>
  <button @click="toggleSideBar" class=myMenuBtn"></button>
</template>

<script>
    export default{
        methods:{
            toggleSideBar(){
                this.$store.commit('toggleSideBar');
            }
        }
    }
</script> 

现在在托管 SideBar 组件的主组件中

<template>
  <side-bar v-show="showSideBar"></side-bar>
</template>

<script>
    import SideBar from './SideBar'
    export default{
        components:{
            'side-bar': SideBar
        },
        computed:{
            showSideBar(){
                this.$store.getters.g_sideBarOpen;
            }
        }
    }
</script>

关于boolean - Vue.js - 使用 vuex 打开/关闭动态侧边栏,考虑不同的组件(导航栏到侧边栏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44235453/

相关文章:

vue.js - 如何禁用 b-table 中整个列的行单击事件?

javascript - 如何使用 webpack 和 vue-loader 更改 .vue 文件中 <img> 的 src 属性?

既非真亦非假的 Python 事物

vue.js - Vue CLI 4.5.* : "export ' default' (imported as 'Vue' ) was not found in 'vue'

Java Sonar 空警告 "null returned but Boolean expected"

javascript - react 从 child 到 parent 的沟通问题

angular - 如何在 Angular 两个子组件之间进行通信?

parameters - Blazor 3.1 Component Tag Helper 参数

python - 区分脚本何时运行 'directly' 或 Python 可执行文件

boolean - or和xor之间的区别