简单实现aside菜单栏折叠 vuex

13 篇文章 0 订阅
3 篇文章 0 订阅

仅对该 折叠功能 简洁分析过程

main中:

<template>
      <el-container style="height:100%">
        <!-- 侧边栏 -->
        <el-aside width="200px">
          <Aside></Aside>
        </el-aside>
         
        <el-container>
          <el-header>
            <Header></Header>
          </el-header>
          <el-main>
            <router-view></router-view>
          </el-main>
        </el-container>
      </el-container>
</template>

aside中:

通过collapse属性的值选择展开和折叠
:collapse=“isCollapse”

<el-menu  @open="handleOpen" @close="handleClose" :collapse="isCollapse">
    <h3>{{isCollapse?'后台':'后台管理系统'}}</h3>
     <!-- 只有一级菜单 -->
    <el-menu-item index="1" >
          <template slot="title">
          <i class="el-icon-location"></i>
          <span>导航一</span>
        </template>
    </el-menu-item> 
     <!-- 有二级菜单 -->
    <el-submenu index="2">
        <!-- 先一级菜单 -->
        <template slot="title">
            <i class="el-icon-menu"></i>
            <span slot="title">导航二</span>
        </template>
        <!-- 再二级菜单 -->
        <el-menu-item-group >
            <el-menu-item index="2-1">二级1</el-menu-item>
            <el-menu-item index="2-2">二级2</el-menu-item>
            <el-menu-item index="2-3">二级3</el-menu-item>
            <el-menu-item index="2-4">二级4</el-menu-item>
        </el-menu-item-group>
    </el-submenu>
</el-menu>
</template>

使用vuex
思路:
在header中点击按钮触发this.$store.commit(‘CollapseMenu’)
store中CollapseMenu函数将isCollapse取反保存,在aside组件取store的值。

aside组件中:

    computed:{
        isCollapse(){
            return this.$store.state.tab.isCollapse
        }
    }

store/index.js

import Vue from 'vue'
import Vuex from 'vuex'
import tab from "./tab.js"
Vue.use(Vuex)
export default new Vuex.Store({
  modules: {
    tab,
  }
})

store/tab.js

export default{
    state:{
        isCollapse:false
    },
    mutations:{
        CollapseMenu(state){
            state.isCollapse = !state.isCollapse
        }
    }
}

header组件中
设置点击按钮对aside进行折叠

 <el-button  @click="handleMenu" ></el-button>


     methods:{
        handleMenu(){
            this.$store.commit('CollapseMenu')
        }
    }

也可以用组件之间通信方式。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是使用Vue3和Element Plus实现手机端侧边菜单栏的步骤: 1. 安装Vue3和Element Plus 首先,你需要安装Vue3和Element Plus。你可以通过npm或yarn安装它们。具体安装命令如下: ``` npm install vue@next npm install element-plus@next ``` 或者 ``` yarn add vue@next yarn add element-plus@next ``` 2. 创建侧边菜单组件 接下来,你需要创建一个侧边菜单组件。你可以使用Element Plus的Menu组件来实现。以下是一个基本的侧边菜单组件示例: ``` <template> <div class="sidebar-menu"> <el-menu :default-active="$route.path" class="el-menu-vertical-demo" router> <el-menu-item index="/"> <i class="el-icon-menu"></i> <span>首页</span> </el-menu-item> <el-menu-item index="/about"> <i class="el-icon-info"></i> <span>关于我们</span> </el-menu-item> <el-menu-item index="/contact"> <i class="el-icon-phone"></i> <span>联系我们</span> </el-menu-item> </el-menu> </div> </template> <script> import { defineComponent } from 'vue' export default defineComponent({ name: 'SidebarMenu', }) </script> <style> .sidebar-menu { height: 100%; background-color: #f0f2f5; padding: 20px; } </style> ``` 在这个示例中,我们使用了Vue Router来处理路由。我们还使用了Element Plus的Menu组件来创建菜单项。 3. 在App组件中引入侧边菜单组件 接下来,你需要在App组件中引入侧边菜单组件。以下是一个基本的App组件示例: ``` <template> <div class="app"> <el-container> <el-aside width="200px"> <sidebar-menu></sidebar-menu> </el-aside> <el-container> <router-view></router-view> </el-container> </el-container> </div> </template> <script> import { defineComponent } from 'vue' import SidebarMenu from './components/SidebarMenu.vue' export default defineComponent({ name: 'App', components: { SidebarMenu, }, }) </script> <style> .app { height: 100%; } </style> ``` 在这个示例中,我们使用了Element Plus的Container和Aside组件来创建一个侧边菜单栏和一个主内容区域。我们还引入了我们之前创建的侧边菜单组件。 4. 完成 现在,你已经创建好了一个基本的手机端侧边菜单栏。你可以根据你的需求自定义样式和菜单项。 希望这可以帮助到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值