本文将介绍利用query和param两种方式进行不同路由间的参数传递。
在写项目时遇到路由间参数传递的需求,查看之前学习记录相关的部分,总结的有些混乱。故有此篇,重新整理一下。
需求如下: 从登录界面(
/login)跳转至主页(/home)要携带用户名信息 后端简单利用flask编写,登录发起的请求返回如下:

路由的注册信息如下(index.js):
const routes = [
{
path:'/',
redirect: 'login'
},
{
path: '/login',
name: 'Login',
component: Login
},
{
path: '/home',
name: 'Home',
component: Home
}
]Login.vue的登录方法如下:
login() {
this.$refs.loginFormRef.validate(async (valid) => {
if(!valid) {
return;
}
else {
const {data: res} = await this.$http.get('login', {params: this.loginForm});
if(res.statusCode !== 200) {
this.$message.error(res.msg);
}
else {
this.$message.success(res.msg);
window.sessionStorage.setItem('token', res.token);
//=======重点的路由跳转如下========
this.$router.push({
name: 'Home', //注意这里的参数为name,其值为路由中注册信息的name部分
params:{username:res.username} //需要向/home路由传递的参数
}).catch(() => {});
//===============================
}
}
})
}Home.vue的接收:
<template>
<div>
<h1>欢迎:{{this.$route.params.username}}</h1>
<el-button type="info" @click="logout">退出登录</el-button>
</div>
</template>效果如下:

小结:
{path: '/home', name: 'Home', component: Home}this.$router.push({name: 'Home', params:{username:res.username}})this.$route.params.username路由的注册信息如下(index.js):
const routes = [
{
path:'/',
redirect: 'login'
},
{
path: '/login',
name: 'Login',
component: Login
},
{
path: '/home',
name: 'Home',
component: Home
}
]Login.vue的登录方法如下:
login() {
this.$refs.loginFormRef.validate(async (valid) => {
if(!valid) {
return;
}
else {
const {data: res} = await this.$http.get('login', {params: this.loginForm});
if(res.statusCode !== 200) {
this.$message.error(res.msg);
}
else {
this.$message.success(res.msg);
window.sessionStorage.setItem('token', res.token)
//=======重点的路由跳转如下========
this.$router.push({
path: '/home', //注意这里的参数为path,其值为路由中注册信息的path部分
query:{username:res.username} //需要向/home路由传递的参数
}).catch(() => {});
//===============================
}
}
})
}Home.vue的接收:
<template>
<div>
<h1>欢迎:{{this.$route.query.username}}</h1>
<el-button type="info" @click="logout">退出登录</el-button>
</div>
</template>效果如下:

小结:
{path: '/home', name: 'Home', component: Home}this.$router.push({path: '/home', query:{username:res.username}})this.$route.query.username各有优劣,按需使用。