前端Vue项目:旅游App-(20)home:点击跳转至带参数的动态路由

Posted karshey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端Vue项目:旅游App-(20)home:点击跳转至带参数的动态路由相关的知识,希望对你有一定的参考价值。

文章目录

本项目博客总结:【前端】Vue项目:旅游App-博客总结

目标

点击热门精选的item跳转至对应详情页:

详情页:


路由的跳转是动态的、带参数的:

过程与代码

详情页detail

随便显示些什么:

<template>
    <div class="detail">
        <h2>detail</h2>
    </div>
</template>

<script setup>

</script>

<style lang="less" scoped>

</style>

路由配置:


    // 参数名为id
    path: '/detail/:id',
    component: () => import("@/views/detail/detail.vue")

home中设置点击跳转

html

<template v-for="(item, index) in houseList" :key="item.data.houseId">
    <houseItemV9 v-if="item.discoveryContentType === 9" :item="item.data"
        @click="itemClick(item.data.houseId)"></houseItemV9>
    <houseItemV3 v-else-if="item.discoveryContentType === 3" :item="item.data"
        @click="itemClick(item.data.houseId)"></houseItemV3>
</template>


js:

const router = useRouter()
function itemClick(id) 
    router.push('/detail/' + id)

detail的显示:

<div class="detail">
    <h2>detail  $route.params.id </h2>
</div>

效果


对应url:

总代码

修改或添加的文件

router/index

配置detail页面的路由。

import  createRouter, createWebHashHistory  from 'vue-router'

const router = createRouter(
    history: createWebHashHistory(),
    routes: [
        
            path: '/',
            redirect: '/home' //重定向到home
        ,
        
            path: '/home',
            component: () => import("@/views/home/home.vue")
        ,
        
            path: '/favor',
            component: () => import("@/views/favor/favor.vue")
        ,
        
            path: '/order',
            component: () => import("@/views/order/order.vue")
        ,
        
            path: '/message',
            component: () => import("@/views/message/message.vue")
        ,
        
            path: '/city',
            component: () => import("@/views/city/city.vue")
        ,
        
            path: '/search',
            component: () => import("@/views/search/search.vue"),
            meta: 
                hideTabBar: true
            
        ,
        
            // 参数名为id
            path: '/detail/:id',
            component: () => import("@/views/detail/detail.vue")
        ,
    ]
)

export default router

detail

detail页面的粗略显示。

<template>
    <div class="detail">
        <h2>detail  $route.params.id </h2>
    </div>
</template>

<script setup>

</script>

<style lang="less" scoped>

</style>

home-content

添加点击跳转事件。

<template>
    <div class="content">
        <h2>热门精选</h2>

        <div class="list">
            <template v-for="(item, index) in houseList" :key="item.data.houseId">
                <houseItemV9 v-if="item.discoveryContentType === 9" :item="item.data"
                    @click="itemClick(item.data.houseId)"></houseItemV9>
                <houseItemV3 v-else-if="item.discoveryContentType === 3" :item="item.data"
                    @click="itemClick(item.data.houseId)"></houseItemV3>
            </template>
        </div>
    </div>
</template>

<script setup>
import  storeToRefs  from "pinia";
import useHomeStore from "../../../store/modules/home";
import houseItemV9 from "../../../components/house-item/house-item-v9.vue";
import houseItemV3 from "../../../components/house-item/house-item-v3.vue";
import useScroll from '@/hooks/useScroll.js'
import  watch  from 'vue'
import  useRouter  from "vue-router";

const homeStore = useHomeStore()
homeStore.fetchHouseList()
const  houseList  = storeToRefs(homeStore)
// console.log(houseList)

const  isReachBottom  = useScroll()
watch(isReachBottom, (newValue) => 
    if (newValue) 
        homeStore.fetchHouseList().then(() => 
            isReachBottom.value = false
        )
    
)

const router = useRouter()
function itemClick(id) 
    router.push('/detail/' + id)


</script>

<style lang="less" scoped>
.content 
    padding: 0 20px;

    h2 
        font-size: 20px;
        font-weight: 700;
    

    .list 
        margin-top: 20px;
        display: flex;
        flex-wrap: wrap;
    

</style>

参考

3.vue-router之什么是动态路由 - 知乎 (zhihu.com)

带参数的动态路由匹配 | Vue Router (vuejs.org)

以上是关于前端Vue项目:旅游App-(20)home:点击跳转至带参数的动态路由的主要内容,如果未能解决你的问题,请参考以下文章

前端Vue项目:旅游App-(12)home-Calendar:日期选择日历动态显示时间

前端Vue项目:旅游App-(13)home:热门数据的网络请求store和显示

前端Vue项目:旅游App-(13)home:热门数据的网络请求store和显示

前端Vue项目:旅游App-(17)home:页面滚动显示搜索栏节流时间同步

前端Vue3+Vant4项目:旅游App-项目总结与预览(已开源)

前端Vue项目:旅游App-(14)home+search:搜索按钮及其路由跳转分组数据的网络请求request数据存储store和动态显示