ZBLOG

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

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

完善后的代码

  1. 修改主组件以包含收缩状态:
  1. <script setup>
  2. import { ref } from 'vue';
  3. const isCollapse = ref(false); // 用于跟踪菜单是否收缩
  4. const handleOpen = () => {};
  5. const handleClose = () => {};
  6. const changeMenu = () => {
  7. isCollapse.value = !isCollapse.value; // 切换菜单的收缩状态
  8. };
  9. </script>
  10. <template>
  11. <div>
  12. <header-component :is-collapse="isCollapse" @change-menu="changeMenu" />
  13. <el-menu
  14. active-text-color="#ffd04b"
  15. background-color="#112f50"
  16. class="el-menu-vertical-demo"
  17. :default-active="2"
  18. text-color="#fff"
  19. v-bind:collapse="isCollapse"
  20. @open="handleOpen"
  21. @close="handleClose"
  22. >
  23. <!-- 菜单内容保持不变 -->
  24. </el-menu>
  25. </div>
  26. </template>
  27. <style lang='less' scoped>
  28. .el-menu {
  29. border-right: 0;
  30. }
  31. .is-active {
  32. background-color: #3787de !important;
  33. color: #fff !important;
  34. }
  35. .el-menu-vertical-demo:not(.el-menu--collapse) {
  36. width: 200px;
  37. min-height: 400px;
  38. }
  39. </style>
  1. 创建 HeaderComponent 并传递 props 和事件:
  1. <!-- HeaderComponent.vue -->
  2. <script setup>
  3. import { defineProps } from 'vue';
  4. const props = defineProps({
  5. isCollapse: Boolean
  6. });
  7. </script>
  8. <template>
  9. <div class="header">
  10. <div class="open">
  11. <i @click="$emit('change-menu')" class="el-icon-s-unfold" v-if="!isCollapse"></i>
  12. <i @click="$emit('change-menu')" class="el-icon-s-fold" v-else></i>
  13. </div>
  14. </div>
  15. </template>
  16. <style lang='less' scoped>
  17. .header {
  18. width: 100%;
  19. height: 50px;
  20. background-color: #1a78bf;
  21. color: #fff;
  22. line-height: 50px;
  23. .open {
  24. font-size: 24px;
  25. margin-left: 10px;
  26. i {
  27. cursor: pointer;
  28. }
  29. }
  30. }
  31. </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

注册

已经有帐号?