meta 路由元元素
meta中key-value都是自定义的
import { createRouter,createWebHistory } from 'vue-router'
export let constom = [
{
path:'/',
name:"Home",
component:()=>import('@/page/Home/index.vue'),
// meta 路由元元素
// meta中key-value都是自定义的
meta:{
title: "首页"
}
}, {
path:'/shopcar',
name:"ShopCar",
component:()=>import('@/page/ShopCar/index.vue'),
meta:{
title:'购物车'
}
}, {
path:'/mine',
name:"Mine",
component:()=>import('@/page/Mine/index.vue'),
meta:{
title:'个人中心'
}
}
]
let router = createRouter({
history:createWebHistory(),
routes:constom,
linkActiveClass: 'router-active', // 自定义被激活路由的class类名 默认名router-link-active
linkExactActiveClass:'router-exact-active',// 自定义精准激活router-link的class类名 默认 router-link-exact-active
})
export default router
onBeforeRouteLeave
离开路由组件时候触发。基本不适用
onBeforeRouteUpdate
/**
* 1:渲染的组件不变
* 2:路由地址发生改变
* 用于:监听路由地址的变化 (特别适合params参数时候)
*
* 还可以使用 watch 监听 $route 方式。代替onBeforeRouteUpdate
*/
<template>
<h1>shop car {{ $route.params.id }}{{ $route.params.title }}</h1>
<div class="list">
<ul>
<li v-for="item in list.shopcar" :key="item.id" @click="e=>change(item)">
<h2>名称:{{ item.title }}</h2>
<h2>价格: {{ item.price }}</h2>
</li>
</ul>
</div>
</template>
<script setup>
import { reactive} from 'vue';
import { useRoute,useRouter,onBeforeRouteLeave,onBeforeRouteUpdate } from 'vue-router'
import { getCarList } from '@/api.js'
let $route = useRoute();
let $router = useRouter();
console.log($route.params);
let list = reactive({
shopcar:[]
})
getCarList().then((data) => {
console.log(data);
list.shopcar = data.data;
})
const change = ({id,title})=>{
// 编程式导航。
$router.push({
name:'ShopCar',
params:{
id,
title
}
})
}
// 离开路由组件时候触发。基本不适用
onBeforeRouteLeave((to,from,next)=>{
console.log('组件内部守卫');
next()
})
/**
* 1:渲染的组件不变
* 2:路由地址发生改变
* 用于:监听路由地址的变化 (特别适合params参数时候)
*
* 还可以使用 watch 监听 $route 方式。代替onBeforeRouteUpdate
*/
onBeforeRouteUpdate((to,from,next)=>{
console.log('before update');
next()
})
</script>
<style scoped>
li{
margin: 20px;
background-color: aqua;
}
</style>
# 如何根据路由配置数组动态生成导航
>**路由配置数组是数据的源头,不可以被改变**
>路由数组被导出后,深拷贝和浅拷贝的问题。建议深拷贝
>我们平时import 导入导出数组对象都是浅拷贝。
>深拷贝会消耗内存
## 基础版
- 1:在每个路由配置中配置`meta`
- 2: 导出路由配置数组
- 3:在主要布局组件中,导入路由数组 并进行深拷贝处理
- 4:根据路由数组循环遍历导航。
>实现根据路由配置动态生成导航
>目的为了让大家有意识