1.0.5 • Published 17 days ago

reactive-menu-item v1.0.5

Weekly downloads
-
License
MIT
Repository
github
Last release
17 days ago

reactive-menu-item

提供一个 ReactiveMenuItemVO 类型的菜单树,可根据url匹配到对应的菜单项,支持动态参数,可利用配置项生成导航,达到动态导航的目的

demo

https://simpleoo0o.github.io/reactive-menu-item-demo

安装

npm i reactive-menu-item

使用

基础用法

<script setup>
    // import ReactiveMenuItem from 'reactive-menu-item/ReactiveMenuItem.vue'
    // import useReactiveMenu from 'reactive-menu-item/useReactiveMenu'
    import { ReactiveMenuItem, useReactiveMenu } from 'reactive-menu-item'

    import menus from '@/menus' // 导航数据,类型为ReactiveMenuItemVO[]

    const reactiveMenuData = useReactiveMenu(menus)
</script>

<template>
    <el-container>
        <el-header>
            <div class="logo">LOGO</div>
            <el-menu
              :default-active="reactiveMenuData.topActiveIndex"
              mode="horizontal">
                <reactive-menu-item v-for="item of reactiveMenuData.menus" :key="item.id" :data="item"/>
            </el-menu>
        </el-header>
        <el-container>
            <el-aside width="200px">
                <el-menu
                  :default-active="reactiveMenuData.activeIndex"
                  mode="vertical">
                    <reactive-menu-item v-for="item of reactiveMenuData.secondMenus" :key="item.id" :data="item">
                    </reactive-menu-item>
                </el-menu>
            </el-aside>
            <el-container>
                <el-main>
                    <RouterView/>
                </el-main>
            </el-container>
        </el-container>
    </el-container>
</template>

插槽

<template>
    <el-menu
      :default-active="reactiveMenuData.activeIndex"
      mode="vertical">
        <reactive-menu-item v-for="item of reactiveMenuData.secondMenus" :key="item.id" :data="item">
            <template #menu-item="{data}">
                {{data.name}}
            </template>
            <template #menu-item-group="{data}">
                {{data.name}}
            </template>
            <template #sub-menu="{data}">
                {{data.name}}
            </template>
        </reactive-menu-item>
    </el-menu>
</template>

mock

<script setup>
    // import useReactiveMenu from 'reactive-menu-item/useReactiveMenu'
    import { useReactiveMenu } from 'reactive-menu-item'

    import menus from '@/menus'

    const reactiveMenuData = useReactiveMenu(menus, {
        mock: {
            kgName: 'abc'
        }
    })
</script>

配置项

<script setup>
    // import useReactiveMenu from 'reactive-menu-item/useReactiveMenu'
    import { useReactiveMenu } from 'reactive-menu-item'

    import menus from '@/menus'

    const reactiveMenuData = useReactiveMenu(menus, {
        config: {
            autoIndex: true, // 无匹配导航时是否重定向到首页,默认true
            selfJump: false // 点击当前导航时,是否跳转,默认false
        }
    })
</script>

provide

<script setup>
import { inject } from 'vue'
const reactiveMenuData = inject('reactiveMenuData')
</script>
1.0.5

17 days ago

1.0.4

28 days ago

1.0.3

1 month ago

1.0.2

1 month ago

1.0.1

1 month ago

1.0.0

2 months ago

0.0.24-alpha.0

8 months ago

0.0.23

8 months ago

0.0.22-alpha.10

8 months ago

0.0.22-alpha.9

8 months ago

0.0.22-alpha.8

8 months ago

0.0.22-alpha.7

8 months ago

0.0.22-alpha.6

8 months ago

0.0.22-alpha.5

8 months ago

0.0.22-alpha.0

8 months ago

0.0.22

8 months ago

0.0.22-alpha.4

8 months ago

0.0.22-alpha.2

8 months ago

0.0.22-alpha.1

8 months ago

0.0.21

8 months ago

0.0.20

9 months ago