/** * 路由拦截器 * 用于在页面跳转时执行特定逻辑 */ // 通过getCurrentPages获取当前页面并触发刷新 const checkCurrentPageAndRefresh = () => { setTimeout(() => { const pages = getCurrentPages(); if (pages.length > 0) { const currentPage = pages[pages.length - 1]; const pagePath = currentPage.route; console.log("当前页面路径:", pagePath); // 如果当前页面是首页,触发刷新事件 if (pagePath === "pages/index/index") { console.log("检测到首页,触发刷新事件"); uni.$emit("indexPageShow"); } // 这里可以添加其他页面的刷新逻辑 // if (pagePath === 'pages/other/page') { // uni.$emit('otherPageShow'); // } } else { console.log("getCurrentPages返回空数组,无法获取当前页面"); } }, 150); // 增加延迟,确保页面完全加载 }; // 拦截器配置 const interceptors = { // 普通页面跳转 navigateTo: { success: () => { checkCurrentPageAndRefresh(); }, }, // 页面返回 navigateBack: { success: () => { checkCurrentPageAndRefresh(); }, }, // 切换 tabbar 页面 switchTab: { success: () => { checkCurrentPageAndRefresh(); }, }, // 重定向页面 redirectTo: { success: () => { checkCurrentPageAndRefresh(); }, }, // 重启应用并打开页面 reLaunch: { success: () => { checkCurrentPageAndRefresh(); }, }, }; // 初始化函数:注册所有拦截器 const initInterceptors = () => { console.log("初始化路由拦截器"); // 注册各种导航方法的拦截器 uni.addInterceptor("navigateTo", interceptors.navigateTo); uni.addInterceptor("navigateBack", interceptors.navigateBack); uni.addInterceptor("switchTab", interceptors.switchTab); uni.addInterceptor("redirectTo", interceptors.redirectTo); uni.addInterceptor("reLaunch", interceptors.reLaunch); console.log("路由拦截器注册完成"); }; // 导出一个对象,包含初始化方法和拦截器配置 export default { init: initInterceptors, interceptors, };