美文网首页
2023-01-14_ant design实现导航菜单

2023-01-14_ant design实现导航菜单

作者: 微笑碧落 | 来源:发表于2023-01-13 22:31 被阅读0次

    1. 简介

    • antd中是通过a-menu、a-menu-item、a-sub-menu来实现导航菜单的。
    • a-menu-item、a-sub-menu必须在a-menu组件下面。
    • a-sub-menu下可以继续拥有a-sub-menu,一直嵌套下去

    2. a-menu常用属性

    • mode //菜单类型,现在支持垂直、水平、和内嵌模式。支持的值:vertical | horizontal | inline。注意。。通常menu是嵌套在a-layout-sider组件下使用,此时mode必须是inline,否则显示会异常。
    • inlineCollapsed //是否收缩。注意。。通常menu是嵌套在a-layout-sider组件下使用,此时这个值失去作用。。收缩改由a-layout-sider组件来实现
    • openKeys //a-menu-item组件必须指定key属性。此时openKeys就是这些a-sub-menu的key的数组
    • selectedKeys
    • theme //主题。。支持的值有light和dark
    <a-menu v-model:openKeys="openKeys" v-model:selectedKeys="selectedKeys" mode="inline" theme="dark">
    

    3. a-menu-item常用属性

    • display //是否禁用
    • key //必须指定,item的唯一标志
    • icon //这个是slot,用来指定图标。官方建议如此书写,假如不这么写,,收缩显示会出问题,而且图标和item的标题没有了空白
    <a-menu-item key="1">
      <template #icon><PieChartOutlined /></template>
      <i>Option1</i>
    </a-menu-item>
    

    4. a-sub-menu的常用属性

    • icon //这个是slot,用来指定图标。
    • title //这个是slot,用来指定子菜单(二级菜单)的标题。

    5. 完整示例

    <template>
        <a-menu v-model:openKeys="openKeys" v-model:selectedKeys="selectedKeys" mode="inline" theme="dark">
          <a-sub-menu key="1">
            <template #icon><pull-request-outlined /></template>
            <template #title>sub1</template>
            <a-menu-item key="1.1"><template #icon><PieChartOutlined /></template><i>option 1.1</i></a-menu-item>
          </a-sub-menu>
          <a-menu-item key="2"><template #icon><PieChartOutlined /></template><i>option 2</i></a-menu-item>
          <a-menu-item key="3" @click="closeSubs"><template #icon><bars-outlined/> </template><i>收缩全部子菜单</i></a-menu-item>
        </a-menu>
    </template>
    
    <script>
    export default {
      name: 'HelloWorld',
      props: {
        msg: String
      },
      data(){
        return {
          collapsed: false,
          selectedKeys: ['2'],
          openKeys: ['1'],
          preOpenKeys: ['sub1'],
        }
      },
      methods:{
        closeSubs(){
          this.openKeys = [];
        }
      }
    }
    </script>
    

    6. 示例的效果

    image.png

    7. a-menu的事件

    • 比较常用的有2个。
      select 被选中时调用 function({ item, key, selectedKeys })
      click 点击 MenuItem 调用此函数 function({ item, key, keyPath })

    • 这2个事件都是针对a-menu-item的,区别:click只要被点击就会被触发。select需要有选择变化的时候才会被触发,比如原本是item1,选择了item2时才会触发这个事件。

    • 参数都是一个对象,key为a-menu-item的key属性。可以通过这个事件和key属性实现路由功能

     <a-menu v-model:openKeys="openKeys" v-model:selectedKeys="selectedKeys" mode="inline" theme="dark" @click="clickItem" @select="selectItem">
        clickItem(clickObj){
          console.log(clickObj)
          console.log(clickObj.item)
          console.log(clickObj.key)
    
        },
        selectItem(clickObj){
          console.log(clickObj)
          console.log(clickObj.item)
          console.log(clickObj.selectedkeys)
        }
    

    8. 官方api

    1. antd menu

    相关文章

      网友评论

          本文标题:2023-01-14_ant design实现导航菜单

          本文链接:https://www.haomeiwen.com/subject/kbfncdtx.html