vue3 el-menu菜单点击展开收缩isCollapse

本文介绍如何在Vue3中使用el-menu组件,通过点击实现菜单的展开和收缩,同时涉及父组件与子组件间的交互和状态管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 定义小仓库

//定义小仓库
import {
  defineStore
} from "pinia";


//第一个小仓库
let useHomeStore = defineStore('Home', {
  //存储数据user
  state: () => {
    return {
      isCollapse: false,
     
    }
  },
  actions: {
    isCollapseFun() {
      this.isCollapse = !this.isCollapse
    },
    
  },
  getters: {

  }

})

export default useHomeStore

2  绑定

<script setup>
import { appSource } from '../../utils/app.js'
import { Calendar, Timer, TakeawayBox } from '@element-plus/icons-vue'
import { useRouter, useRoute } from 'vue-router'
import { onMounted, ref, watch } from 'vue'
import useHomeStore from '../../stores/modules/home'
let homeStore =
### 实现 `el-menu` 组件默认展开所有菜单项 为了使 `el-menu` 组件中的所有子菜单默认处于展开状态,可以利用 `el-submenu` 的属性 `popper-class` 或者通过设置 `el-menu` 属性 `default-openeds` 来指定哪些子菜单应该被默认打开。 当希望所有的子菜单都默认展开时,可以通过给 `el-menu` 添加 `:default-openeds` 并绑定一个包含了所有需要展开的子菜单索引数组来达成目的[^1]。对于动态获取或全部展开的情况,则可以在初始化页面数据的时候构建这个数组。 #### 示例代码: ```html <template> <el-menu :default-openeds="openAll" class="el-menu-vertical-demo" :collapse="homeStore.isCollapse" background-color="#001529" text-color="white" active-text-color="yellowgreen" :router="trueValue" :default-active="$route.path" @select="handleSelect"> <!--菜单--> </el-menu> </template> <script setup> import { ref, onMounted } from &#39;vue&#39;; const openAll = ref([]); // 定义用于存储要默认展开的子菜单ID列表 onMounted(() => { // 假设这里有一个函数可以获得所有子菜单的唯一标识符(通常是index) const allSubMenuIndexes = getAllSubMenuIndexes(); openAll.value = allSubMenuIndexes; }); function getAllSubMenuIndexes() { // 此处应返回一个包含所有子菜单 index 的数组 return [&#39;1&#39;, &#39;2&#39;, &#39;3&#39;]; // 这只是一个示例,请替换为实际逻辑 } </script> ``` 上述代码展示了如何让 `el-menu` 中的所有子菜单在初次渲染时即呈现为已展开的状态。需要注意的是,在真实的应用场景下,可能还需要考虑性能优化等问题,比如只预加载可见区域内的内容等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端小云儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值