美文网首页
Vue3 使用route手写面包屑导航组件

Vue3 使用route手写面包屑导航组件

作者: 小李不小 | 来源:发表于2021-08-14 16:39 被阅读0次

Vue3.0 使用route手写面包屑导航组件

如图,实现一个点击左侧菜单后,右侧面包屑导航随之变化的功能。


image.png
image.png

vue3 router 官方英文文档

vue3 router API 移步: https://next.router.vuejs.org/

一些需要注意的点

  • route
    在vue3中,route不可直接使用,需要引入useRoute,再用一个变量去接收。
// script 引入useRoute
   import {useRoute} from 'vue-router';

//setup 中接收route
  const route = useRoute();
  • watch
    在vue3中,watch可以存在多个,也可以合并。文中只监听了一个数据,故只使用了一个watch。
 // watch()中可以放置两个参数,第一个参数放入被监听数据,第二个参数放入回调函数用来进行数据操作
   watch(()=>route.matched,(newVal,oldVal)=>{
     // xxx= newVal;
   })

router部分

为每一个路由配置一个meta:{title:" xxx"}

//index.js
import { createRouter, createWebHashHistory } from "vue-router";
const routes = [
  {
    path: "/index",
    name: "index",
    meta: {
      title: '主页'
    },
    redirect: '/main',
    component: () => import(/* webpackChunkName: "index" */ "../views/layout/index.vue"),
    children: [
      {
        path: "/main",
        name: "main",
        meta: {
          title: '首页'
        },
        //component: () => import(/* webpackChunkName: "index" */ "../views/layout/home/main.vue")
        component: () => import(/* webpackChunkName: "index" */ "../views/layout/home/main.vue")
      },
      {
        path: "/stats",
        name: "stats",
        meta: {
          title: '数据统计'
        },
        component: () => import(/* webpackChunkName: "index" */ "../views/layout/stats/stats.vue")
      },
      {
        path: "/wms",
        name: "wms",
        meta: {
          title: '信息管理'
        },
        component: () => import(/* webpackChunkName: "index" */ "../views/layout/wms/wms.vue"),
        children: [
          {
            path: "/wms/list",
            name: "list",
            meta: {
              title: '列表展示'
            },
            component: () => import(/* webpackChunkName: "index" */ "../views/layout/wms/list.vue")
          },
          {
            path: "/wms/info",
            name: "info",
            meta: {
              title: '用户统计'
            },
            component: () => import(/* webpackChunkName: "index" */ "../views/layout/wms/info.vue")
          },
        ]
      }
    ]
  },
];

Html部分

// An highlighted block
<template>
  <div class="breadcumb">
      <ul>
        <li >       
            <a v-for="(item,index) in list" :key="index">
              <router-link :to="{path:item.path}">{{item.meta.title}}
                <span v-if="index < list.length-1">/ </span> <!--避免在导航最后出现分割线-->
              </router-link>
            </a>     
        </li>
      </ul>
  </div>
</template>

Js部分

route.matched中的信息


image.png
  • 定义一个数组list:[] 用来存放路由中的信息
  • list数组中的数据不会在点击菜单后自动变化,需要用watch监听数组变化并更新数据
/ An highlighted block
<script>
import { reactive, toRefs, onMounted,watch } from "vue";
import {useRoute} from 'vue-router';
export default {
  setup() {
    //data
    const route = useRoute();
    const state = reactive({
     list:[]
    });
    
    //onMounted
    onMounted(()=>{
      let matched = route.matched;//获取菜单对应的路由信息
      state.list = matched;
    })
    
    //watch
    watch(()=>route.matched,(newVal,oldVal)=>{
      let matched = newVal;
      state.list = matched;//更新路由菜单数组
    })
    
    //return
    return {
      ...toRefs(state), //toRefs() 将数据变成响应式数据
    };
  }
};
</script>

相关文章

  • Vue3 使用route手写面包屑导航组件

    Vue3.0 使用route手写面包屑导航组件 如图,实现一个点击左侧菜单后,右侧面包屑导航随之变化的功能。 vu...

  • 重新认识组件-面包屑导航

    什么是面包屑导航 面包屑导航是网页设计中极为常见的一种设计方法,我们经常使用面包屑导航来作为网页导航框架中的辅助手...

  • 🐜 Techs记录本【持续更新】

    1、面包屑导航面包屑导航的作用是告诉访问者他们目前在网站中的位置以及如何返回。并不是所有的网站都适合使用面包屑导航...

  • 6月12日 => 星期五

    1,面包屑导航父子组件传值 父页面.jsx 子页面.jsx 2,

  • provide inject在vue2和vue3中的使用

    vue2父组件 vue2子组件 vue3父组件 vue3子组件 vue3官方详细使用provide inject地...

  • BootStrap[第九章:路径分页标签和徽章组件]

    一.路径组件 路径组件也叫做面包屑导航。 二.分页组件 分页组件可以提供带有展示页面的功能。 三.标签 四.徽章

  • week2_BreadcrumbNavigation

    面包屑导航 BreadcrumbNavigation BreadcrumbNavigation面包屑导航的作用是告...

  • 2019-02-28随笔

    1、组件:栅格、布局、按钮、图标、面包屑、下拉菜单、导航菜单、分页、表单、日期组件、表格、树选择、文件上传、文字提...

  • webpack--手写loader

    背景 项目中的面包屑导航需要每次在组件中引入、注册并使用,考虑做优化:只引入并注册使用一次,且要能满足一些特殊...

  • 基于OC的基础Router实现

    Route 路由实现功能 使用 api导航 服务导航 总结 使用 解析参数 传入参数调用 路由规则 scheme:...

网友评论

      本文标题:Vue3 使用route手写面包屑导航组件

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