Vue 路由组件参数设置与获取 query参数与params参数
Vue 路由参数的设置与获取
一、query参数
设置routes
import VueRouter from 'vue-router'
import Polaris from '../pages/Polaris'
import PolarisMessage from '../pages/PolarisMessage'
import PolarisPhone from '../pages/PolarisPhone'
import Detail from '../pages/Detail'
export default new VueRouter({
routes: [
{
component: Polaris,
path: "/Polaris",
children: [
{
path: 'PolarisMessage',
component: PolarisMessage
},
{
path: 'PolarisPhone',
component: PolarisPhone,
children: [
{
path: 'detail',
component: Detail
}
]
}
]
},
]
})
传参
PolarisPhone.vue
<template>
<div>
<h1>phone by Polaris</h1>
<!-- 1 query参数 字符串写法 -->
<!-- <router-link v-for="item in detailList" :to="`/Polaris/PolarisPhone/Detail?msg=${item.msg}`" :key="item.id">{{item.title}}</router-link>
-->
<!-- 1 query参数 对象写法 -->
<router-link
v-for="item in detailList"
:to="{
path: '/Polaris/PolarisPhone/detail',
query: {
msg: item.msg,
},
}"
:key="item.id"
>{{ item.title }}</router-link
>
<div>
<router-view />
</div>
</div>
</template>
<script>
export default {
data: () => ({
detailList: [
{ id: 1, title: "查看详情1", msg: "我是详情1" },
{ id: 2, title: "查看详情2", msg: "我是详情2" },
{ id: 3, title: "查看详情3", msg: "我是详情3" },
],
}),
};
</script>
获取参数
Detail.vue
<template>
<li >
<span>{{$route.query.msg}}</span>
</li>
</template>
<script>
export default {};
</script>
二、params参数
- props为对象
- props为布尔值
- props为函数
props为对象
routes中写死数据,路由组件中声明props接收
router/index.js
import VueRouter from 'vue-router'
import Island from '../pages/Island'
export default new VueRouter({
routes: [
{
component: Island,
path: "/Island",
props:{id:666}
}
]
})
Island.vue
声明props接收
<template>
<div>
<h1>{{id}}</h1>
</div>
</template>
<script>
export default {
props:['id']
};
</script>
props为布尔值
routes中声明props为true已经path占位符,路由中间中声明props接收
router/index.js
import VueRouter from 'vue-router'
import Island from '../pages/Island'
export default new VueRouter({
routes: [
{
component: Island,
path: "/Island/:id",
props:true
}
]
})
App.vue
<template>
<div id="app">
<div class="nav">
<router-link class="nav" :to="`/Island/${id}`" active-class="active-nav">
Island
</router-link>
</div>
<div class="con">
<router-view />
</div>
</div>
</template>
<script>
export default {
name: "App",
data:()=>({id:123})
};
</script>
Island.vue
声明props接收
<template>
<div>
<h1>{{id}}</h1>
</div>
</template>
<script>
export default {
props:['id']
};
</script>
props为函数
routes中声明props为一个函数,Vue给这个函数注入$routes形参,从而得到路由参数
可以拿到params和query参数
router/index.js
import VueRouter from 'vue-router'
import Island from '../pages/Island'
export default new VueRouter({
routes: [
{
component: Island,
path: "/Island",
props: ($routes) => ({
id: $routes.query.id,
title: $routes.query.title
})
}
]
})
App.vue
<template>
<div id="app">
<div class="nav">
<router-link class="nav" :to="`/Island?id=${id}&title=${title}`" active-class="active-nav">
Island
</router-link>
</div>
<div class="con">
<router-view />
</div>
</div>
</template>
<script>
export default {
name: "App",
data:()=>({id:123,title:'my title'})
};
</script>
Island.vue
声明props并接收参数
<template>
<h1>
{{id}}
-
{{title}}
</h1>
</template>
<script>
export default {
props:['id','title']
};
</script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端