详解vue-router 2.0 常用基础知识点之router-link
发布时间 - 2026-01-11 01:03:55 点击率:次前端采用前后端分离的方式进行开发,我们使用vue2.0框架,做单页面应用难免会用到vue-router,今天把项目中的用到router-link摘出来,一是想整理一下这些用法,方便下次快速查找,二是重新再过一下vue-router,增加熟悉度。也希望下面这些例子能帮到其他使用vue-router的朋友。

1,$route.params
类型: Object
一个 key/value 对象,包含了 动态片段 和 全匹配片段,如果没有路由参数,就是一个空对象。
path: '/detail/:id' 动态路径参数 以冒号开头
const routes = [
{path: '/detail/:id', component: Detail, name: 'detail', meta: {title: ''}},
{path: '/activity', component: Activity, name: 'activity', meta: {isNeedAuth: false, title: '活动现场'}},
];
还可以在一个路由中设置多段『路径参数』,对应的值都会设置到 $route.params 中
1个参数
模式: /user/:username
匹配路径: /user/evan
$route.params:{ username: 'evan' }
多个参数
模式: /user/:username/post/:post_id
匹配路径:/user/evan/post/123
$route.params:{ username: 'evan', post_id: 123 }
复用组件时,想对路由参数的变化作出响应的话,你可以简单地 watch(监测变化) $route 对象:
const User = {
template: '...',
watch: {
'$route' (to, from) {
// 对路由变化作出响应...
}
}
}
或者像下面这样,只要$route发生变化,就可以做某事:
export default {
data () {
return {}
},
watch: {
// 如果路由有变化,会再次执行该方法
'$route': 'doSomeThing'
},
methods: {
doSomeThing(){}
}
}
综合案例
// 当匹配到一个路由时,参数值会被设置到 this.$route.params,可以在每个组件内使用。
// 可以通过this.$route.params.id来取上动态的id
<router-link :to="{path: '/detail/' + this.$route.params.id}" >
此团详情
</router-link>
// 还可以用命名路由的方式:
<router-link :to="{ name: 'detail', params:{ id: this.$route.params.id }}" >
此团详情
</router-link>
// 还可以用router.push()的方式
router.push({name:'detail', params: { id: this.$route.params.id}})
// 以上三种方式都可以实现跳转,都可以通过this.$route.params来取到参数
2,$route.query
类型: Object
一个 key/value 对象,表示 URL 查询参数。例如,对于路径 /foo?user=1,则有 $route.query.user == 1,如果没有查询参数,则是个空对象。
// 动态数据的查询参数
export default {
data() {
return {
queryData: {}
}
},
created() {
this.$http.get(url)
.then(function (response) {
// ...
if (data.code == 0) {
this.queryData.order_id = data.content.order_id;
this.queryData.business_id = data.content.business_id;
this.queryData.coupon_id = data.content.coupons.coupon_id;
}
// ...
}, function (response) {
// ...
})
},
}
// 使用
<router-link :to="{ path: '/backend/verify_coupon', query:this.queryData }">验证抵扣券</router-link>
3,定义路由的时候可以配置 meta 字段
// 举个例子
const routes = [
{path: '/activity', component: Activity, name: 'activity', meta: {isNeedAuth: false, title: '活动现场'}},
];
实际工作中使用的时候就可以像下面这样:
import { setTitleHack } from './utils';
import Activity from './views/activity.vue'
import Start from './views/start.vue'
// 定义路由的时候在meta中加入自定义字段
const routes = [
{path: '/activity', component: Activity, name: 'activity', meta: {isNeedAuth: false, title: '活动现场'}},
{path: '/start', component: Start, name: 'start', meta: {isNeedAuth: false, title: '活动现场'}},
];
const router = new VueRouter({...});
router.beforeEach((to, from, next) => {
// 动态修改页面的title
setTitleHack(to.meta.title);
// 根据自定义的路由元信息来做判断:
if (to.meta.isNeedAuth !== false) {
// do something
} else {
// do something
}
next();
});
4,append
设置 append 属性后,则在当前(相对)路径前添加基路径。例如,我们从 /a 导航到一个相对路径 b,如果没有配置 append,则路径为 /b,如果配了,则为 /a/b
复制代码 代码如下:
<router-link :to="{path:'/coupon/detail/'+item.order_id, append:'true'}"></router-link>
如果上面这个路由是从home页面跳转过来,得到的结果就是/home/coupon/detail/id
5,active-class
类型: string
默认值: "router-link-active"
设置 链接激活时使用的 CSS 类名。默认值可以通过路由的构造选项 linkActiveClass 来全局配置。
复制代码 代码如下:
<router-link tag="li" :to="{path:'/home', activeClass: 'bottom-nav-active'}"></router-link>
7,综合案例
// 命名路由,append 属性,查询参数,router-link渲染成<li>标签
<router-link tag="li" :to="{name:'demandindex', append:true, query: {isFormBackend: 1}, activeClass: 'bottom-nav-active'}">
</router-link>
// to的值:字符串形式
<router-link to="banner.image_url" ></router-link>
// to的值:对象形式,拼接多个动态参数
<router-link :to="{path: '/my/modify?modify=fullname&val=' + profile.nickname}" ></router-link>
// to的值:对象形式
<router-link :to="{path: '/home'}">返回首页</router-link>
// to的值:对象形式,拼接动态参数
<router-link to="{path: '/backend/coupon_order_detail/' + product.order_id+'?order_status='+product.order_status}"></router-link>
// to的值:对象形式,带一个路径参数
<router-link :to="{path: '/detail/' + this.$route.params.id}" ></router-link>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# vue
# router
# link
# vue2.0
# vue.js
# 详解vue中router-link标签所必备了解的属性
# vue router-link传参以及参数的使用实例
# vue路由跳转router-link清除历史记录的三种方式(总结)
# vue router-link 默认a标签去除下划线的实现
# Vue 页面跳转不用router-link的实现代码
# Vue中router-link常用属性使用案例讲解
# 可以通过
# 如果没有
# 多个
# 可以用
# 自定义
# 跳转
# 就可以
# 默认值
# 还可以
# 你可以
# 一是
# 则是
# 是从
# 三种
# 可以实现
# 来做
# 则在
# 首页
# 再过
# 则为
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速生成专业多端适配建站电话?
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
Laravel如何使用Telescope进行调试?(安装和使用教程)
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
如何在IIS中新建站点并配置端口与物理路径?
如何在 React 中条件性地遍历数组并渲染元素
iOS验证手机号的正则表达式
开心动漫网站制作软件下载,十分开心动画为何停播?
如何在阿里云完成域名注册与建站?
Laravel如何创建自定义Facades?(详细步骤)
如何在阿里云部署织梦网站?
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
用yum安装MySQLdb模块的步骤方法
如何在IIS中新建站点并解决端口绑定冲突?
如何快速搭建安全的FTP站点?
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
Angular 表单中正确绑定输入值以确保提交与验证正常工作
高性能网站服务器配置指南:安全稳定与高效建站核心方案
微信公众帐号开发教程之图文消息全攻略
如何在腾讯云免费申请建站?
如何用已有域名快速搭建网站?
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
Python文件操作最佳实践_稳定性说明【指导】
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Laravel如何配置Horizon来管理队列?(安装和使用)
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
Laravel如何使用Service Container和依赖注入?(代码示例)
如何在自有机房高效搭建专业网站?
Swift开发中switch语句值绑定模式
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
如何构建满足综合性能需求的优质建站方案?
Laravel如何实现用户密码重置功能?(完整流程代码)
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
香港服务器WordPress建站指南:SEO优化与高效部署策略
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
Laravel中的withCount方法怎么高效统计关联模型数量
Laravel中间件如何使用_Laravel自定义中间件实现权限控制

