vue3前端开发-小兔鲜项目-二级页面面包屑导航和跳转!这一次,做两件事。第一件事是把二级分类页面的跳转(也就是路由)设计一下。第二件事是把二级页面的面包屑导航设计一下。
第一件事,二级页面的跳转路由设计一下。
如图,我们提前创建,准备好二级页面需要用到的组件代码。
<script setup>
import {getCategoryFilterAPI} from '@/apis/category'
import {ref,onMounted} from 'vue'
import { useRoute } from 'vue-router';
const categoryData = ref({})
const route = useRoute()
const getCategoryData =async ()=>{
const res = await getCategoryFilterAPI(route.params.id)
categoryData.value = res.result
}
onMounted(()=>getCategoryData())
</script>
<template>
<div class="container ">
<!-- 面包屑 -->
<div class="bread-container">
<el-breadcrumb separator=">">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: `/category/${categoryData.parentId}` }">{{categoryData.parentName}}
</el-breadcrumb-item>
<el-breadcrumb-item>{{ categoryData.name }}</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="sub-container">
<el-tabs>
<el-tab-pane label="最新商品" name="publishTime"></el-tab-pane>
<el-tab-pane label="最高人气" name="orderNum"></el-tab-pane>
<el-tab-pane label="评论最多" name="evaluateNum"></el-tab-pane>
</el-tabs>
<div class="body">
<!-- 商品列表-->
</div>
</div>
</div>
</template>
<style lang="scss" scoped>
.bread-container {
padding: 25px 0;
color: #666;
}
.sub-container {
padding: 20px 10px;
background-color: #fff;
.body {
display: flex;
flex-wrap: wrap;
padding: 0 10px;
}
.goods-item {
display: block;
width: 220px;
margin-right: 20px;
padding: 20px 30px;
text-align: center;
img {
width: 160px;
height: 160px;
}
p {
padding-top: 10px;
}
.name {
font-size: 16px;
}
.desc {
color: #999;
height: 29px;
}
.price {
color: $priceColor;
font-size: 20px;
}
}
.pagination-container {
margin-top: 20px;
display: flex;
justify-content: center;
}
}
</style>
第二步,我们需要设计一下路由的内容。
如图所示,比较简单。就是多了sub的过滤参数,后面还是一样的动态绑定了参数id
我们需要把入口地址的代码修改成动态的即可。
如图,入口地址在一级页面的这个位置。是一个v-for遍历的内容。比较简单。不再过多的介绍了。
经过上面的设计,我们就可以实现二级页面的跳转了。
第二件事是,面包屑导航的渲染。
还是和之前一样,都是需要从远程业务接口那边调用数据的。因此,还是的提前准备好调用接口的函数。
/**
* @description: 获取二级分类列表数据
* @param {*} id 分类id
* @return {*}
*/
export const getCategoryFilterAPI = (id) => {
return request({
url:'/category/sub/filter',
params:{
id
}
})
}
然后在二级分类页面的组件内调用一下就行了。
<script setup>
import {getCategoryFilterAPI} from '@/apis/category'
import {ref,onMounted} from 'vue'
import { useRoute } from 'vue-router';
const categoryData = ref({})
const route = useRoute()
const getCategoryData =async ()=>{
const res = await getCategoryFilterAPI(route.params.id)
categoryData.value = res.result
}
onMounted(()=>getCategoryData())
</script>
如图,没有什么技巧,还是使用的路由插件的帮助,拿到了路由参数的内容。就可以顺利获取到对应的二级路由的信息了。
绑定内容比较简单。
<!-- 面包屑 -->
<div class="bread-container">
<el-breadcrumb separator=">">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: `/category/${categoryData.parentId}` }">{{categoryData.parentName}}
</el-breadcrumb-item>
<el-breadcrumb-item>{{ categoryData.name }}</el-breadcrumb-item>
</el-breadcrumb>
</div>
如图所示,分别设置绑定到对应的标签里面即可。