封装组件库-侧边导航栏

2023, Feb 15    

实现导航栏的二次封装

基于Header-Aside-Main布局,实现侧边导航栏的伸缩。

初始配置

  • 配置vite2+vue-ts开发环境,createWebHistory路由配置
  • 将Container导航组件配置为根路由组件,children项配置Home组件
  • 定义两个子组件:navHeader、navSide

利用Menu菜单属性collapse实现伸缩,默认值false

<el-header>
  <!-- v-model传props -->
  <nav-header v-model:collapse="isCollapse"></nav-header>
</el-header>

defineProps API为函数,返回值为父组件传来的属性

// 声明泛型
let props = defineProps<{
  collapse: boolean
}>()
// 定义发送给父组件的方法
let emits = defineEmits(['update:collapse'])
//toggle为改变Header组件中伸缩图标的方法
let toggle = ()=>{
    emits('update:collapse', !props.collapse)
}

接收collapse值

let props = defineProps<{
    collapse: boolean
}>()

基于官方文档,设置伸展的width,父组件的el-aside设置width为auto

.el-menu-vertical-demo:not(.el-menu--collapse) {
    width: 200px;
}