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>
如图所示,分别设置绑定到对应的标签里面即可。