路由拦截器 Router
路由拦截器。
兼容性
- 兼容:✅
- 不兼容:❌
- 未知:❔
H5 | 安卓 | 苹果 | 微信 | 支付宝 | 百度 | 抖音 | 快手 | 飞书 | 京东 | |
---|---|---|---|---|---|---|---|---|---|---|
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
小红书 | 鸿蒙 | 360 | 华为快应用 | 快应用联盟 |
---|---|---|---|---|
✅ | ❔ | ❔ | ❔ | ❔ |
插件市场地址
配置
- 在
main.js
中进行如下配置即可使用。
js
// 引入 Pure Router
import pureRouter from "@/uni_modules/pure-router";
// 使用 Pure Router
app.use(pureRouter, {
// 跳转前的拦截(处理)函数
before: (params = {}) => {
console.log("Pure Router 跳转前的拦截(处理)函数 ->", params);
return true;
},
// 跳转后的拦截(处理)函数
after: (pageJsonConfig = {}) => {
console.log("Pure Router 跳转后的拦截(处理)函数 ->", pageJsonConfig);
},
});
使用
- 经过上面的配置后,
Pure Router
就可以监听到页面的跳转事件了。
vue
<script setup>
// 可以监听到 uni.navigateTo、uni.navigateBack、uni.redirectTo、uni.reLaunch、uni.switchTab 等方法进行的路由跳转。
// 例如:
uni.navigateTo({
url: "/pages/home/index",
});
</script>
配置项
属性名 | 说明 | 类型 | 默认值 | 可选值 | 版本 |
---|---|---|---|---|---|
before | 跳转前的拦截(处理)函数,返回 true 表示继续跳转,返回 false 表示终止跳转 | Function | null | - | +1.0.0 |
after | 跳转后的处理函数,无返回值 | Function | null | - | +1.0.0 |
Before 函数参数说明
before
函数只有一个Object
参数,该参数包含使用uni.navigateTo
、uni.navigateBack
、uni.redirectTo
、uni.reLaunch
、uni.switchTab
等方法进行的路由跳转时所传入的参数。- 另外,组件在
Object
中新增了3
个实用的属性:fromPageJsonConfig
:来源页面在pages.json
中的配置信息。toPageJsonConfig
:目标页面在pages.json
中的配置信息。navigateType
:路由跳转类型,navigateTo
、navigateBack
、redirectTo
、reLaunch
、switchTab
等。
after 函数参数说明
after
函数只有一个Object
参数,该参数为当前页面在pages.json
中的配置信息。
实用函数
Pure Router
提供了一些实用函数,方便开发者进行路由相关的处理:
函数名 | 说明 | 参数 | 返回值 | 版本 |
---|---|---|---|---|
setConfig | 设置配置项,参数为 pure-router 的配置 | Object | - | +1.0.0 |
refresh | 刷新页面 | - | - | +1.0.0 |
getCurrentPageJsonConfig | 获取当前页面在 pages.json 中的配置信息 | - | Object、null | +1.0.0 |
getPrevPageJsonConfig | 获取上一页面在 pages.json 中的配置信息 | - | Object、null | +1.0.0 |
getPageJsonConfig | 获取指定页面在 pages.json 中的配置信息 | url: 页面路由字符串 | Object、null | +1.0.0 |
isTabBarPage | 判断页面是否是 tabbar 页面 | url: 页面路由字符串,如果未传则判断当前页面是否是tabbar页面 | true、false | +1.0.0 |
- 调用函数方式为:
js
uni.$pureRouter.setConfig({});
uni.$pureRouter.refresh();
const currentPageJsonConfig = uni.$pureRouter.getCurrentPageJsonConfig();
const prevPageJsonConfig = uni.$pureRouter.getPrevPageJsonConfig();
const pageJsonConfig = uni.$pureRouter.getPageJsonConfig("/pages/home/index");
const isTabbar = uni.$pureRouter.isTabBarPage("/pages/home/index");