ZBLOG

const handleOpen = () => {}; const handleClose = () => {};

要在 Vue 3 中实现一个组件控制另一个组件的收缩和展开,您可以使用状态管理(如 refreactive)来跟踪菜单是否处于收缩状态。以下是一个示例代码,展示如何实现这个功能。

完善后的代码

  1. 修改主组件以包含收缩状态:
<script setup>
import { ref } from 'vue';

const isCollapse = ref(false); // 用于跟踪菜单是否收缩

const handleOpen = () => {};
const handleClose = () => {};

const changeMenu = () => {
    isCollapse.value = !isCollapse.value; // 切换菜单的收缩状态
};
</script>

<template>
  <div>
    <header-component :is-collapse="isCollapse" @change-menu="changeMenu" />
    
    <el-menu
      active-text-color="#ffd04b"
      background-color="#112f50"
      class="el-menu-vertical-demo"
      :default-active="2"
      text-color="#fff"
      v-bind:collapse="isCollapse" 
      @open="handleOpen"
      @close="handleClose"
    >
      <!-- 菜单内容保持不变 -->
    </el-menu>
  </div>
</template>

<style lang='less' scoped>
.el-menu {
  border-right: 0;
}
.is-active {
  background-color: #3787de !important;
  color: #fff !important;
}
.el-menu-vertical-demo:not(.el-menu--collapse) {
  width: 200px;
  min-height: 400px;
}
</style>
  1. 创建 HeaderComponent 并传递 props 和事件:
<!-- HeaderComponent.vue -->
<script setup>
import { defineProps } from 'vue';

const props = defineProps({
    isCollapse: Boolean
});
</script>

<template>
    <div class="header">
        <div class="open">
            <i @click="$emit('change-menu')" class="el-icon-s-unfold" v-if="!isCollapse"></i>
            <i @click="$emit('change-menu')" class="el-icon-s-fold" v-else></i>            
        </div>
    </div>
</template>

<style lang='less' scoped>
.header {
    width: 100%;
    height: 50px;
    background-color: #1a78bf;
    color: #fff;
    line-height: 50px;

    .open {
        font-size: 24px;
        margin-left: 10px;

        i {
            cursor: pointer;
        }
    }
}
</style>

功能说明:

  1. 状态管理

    • 使用 ref 创建 isCollapse 来管理菜单的展开/收缩状态。
  2. Header Component

    • 将收缩状态作为 prop(is-collapse)传递给 header component,并通过 $emit 发出点击事件,以切换菜单的收缩状态。
  3. 菜单组件

    • 在菜单组件中,通过指令将 collapse 属性绑定到 isCollapse,这样当其值变化时,可以自动控制显示效果。

通过这种方式,您可以轻松地控制一个组件的展现效果,另一个组件响应该操作。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=19565

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?