vue3路由监听
时间: 2025-05-05 21:49:47 浏览: 35
### Vue 3 中实现路由监听的方式
在 Vue 3 中,可以通过组合式 API 和 `watch` 方法来监听路由的变化。以下是具体实现方法:
#### 使用 `useRoute` 和 `watch`
通过引入 `useRoute` 函数可以获取当前的路由实例,并利用 `watch` 对其特定属性进行监控。当路由发生改变时,触发回调函数执行相应逻辑。
```javascript
<script setup>
import { useRoute, useRouter } from 'vue-router';
import { ref, watch } from 'vue';
const route = useRoute();
const router = useRouter();
// 定义响应式变量用于存储展示状态
const isShow = ref(false);
// 监听路由名称变化
watch(
() => route.name,
(newValue) => {
if (newValue === 'newPage') {
isShow.value = true;
} else {
isShow.value = false;
}
}
);
</script>
<template>
<div v-if="isShow">这是新增页面</div>
</template>
```
上述代码展示了如何基于路由名判断是否显示某个组件[^1]。
#### 利用 `$route` 的监听器
另一种方式是在选项式 API 下使用 `watch` 或者直接定义 `$route` 属性的监听器。这种方式适用于传统写法的应用场景。
```javascript
export default {
data() {
return {
id: null,
};
},
watch: {
'$route': {
handler(newVal, oldVal) {
console.log('新路由:', newVal);
console.log('旧路由:', oldVal);
// 更新数据或其他操作
this.id = newVal.query.id;
// 如果需要强制刷新页面
this.$router.go(0);
},
immediate: true, // 立即执行一次监听处理程序
deep: true, // 深度监听
},
},
};
```
此示例说明了如何捕获路由参数并更新组件内部的状态,同时支持页面重载功能[^5]。
#### 核心流程概述
整个过程涉及以下几个关键环节:
- **URL 变更检测**:依据所选模式(hash 或 history),框架自动跟踪地址栏变动情况。
- **路径解析与匹配**:将新的 URL 解析成标准形式并与预设规则对比找出最佳适配项。
- **导航验证机制**:借助全局/局部守卫拦截请求确认合法性后再继续下一步骤。
- **目标视图呈现**:最终把选定的内容填充至 `<router-view>` 占位符位置完成界面切换效果[^3]。
---
###
阅读全文
相关推荐

















