Skip to content

路由拦截器 Router

路由拦截器。

兼容性

  • 兼容:✅
  • 不兼容:❌
  • 未知:❔
H5安卓苹果微信支付宝百度抖音QQ快手飞书京东
小红书鸿蒙360华为快应用快应用联盟

插件市场地址

DCloud 插件市场地址

配置

  • 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 表示终止跳转Functionnull-+1.0.0
after跳转后的处理函数,无返回值Functionnull-+1.0.0

Before 函数参数说明

  • before 函数只有一个 Object 参数,该参数包含使用 uni.navigateTouni.navigateBackuni.redirectTouni.reLaunchuni.switchTab 等方法进行的路由跳转时所传入的参数。
  • 另外,组件在 Object 中新增了 3 个实用的属性:
    • fromPageJsonConfig:来源页面在 pages.json 中的配置信息。
    • toPageJsonConfig:目标页面在 pages.json 中的配置信息。
    • navigateType:路由跳转类型,navigateTonavigateBackredirectToreLaunchswitchTab 等。

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");

基于 MIT 许可发布