鸿蒙开发5.0【基于Navigation的路由拦截管理】

路由拦截是开发中常见场景,比如校验用户是否登录、路由拦截添加弹窗等。通过setInterception可以实现这些功能,该需求主要用于路由拦截前调用开发者设置的拦截回调,和拦截回调里开发者返回处理后需要跳转的页面信息

场景一:判断用户是否登录。

方案:

​设置并开启页面路由拦截registerInterception,通过全局变量LocalStorage判断用户当前是否登录,未登录时点击购物车会被拦截并跳转至登录页,输入用户名和密码后将LocalStorage改为true表示已登录,然后跳转至购物车。

核心代码

设置willShow页面跳转前拦截,当从首页跳转(即typeof from === “string”)时,如果此时登录状态为false(!this.storageLink)且目标页为购物车(target.pathInfo.name === ‘pageTwo’),则会将跳转的目标页pop,然后跳转至登录页登录。

registerInterception() { 
  let loginIntercept:InterceptionShowCallback = (from: NavDestinationContext | "navBar", to: NavDestinationContext | "navBar") => { 
    if (!this.isUseInterception) { 
      return; 
    } 
    if (typeof from === 'string') { 
      let target: NavDestinationContext = to as NavDestinationContext; 
      console.log("source page is navigation home"); 
      if (!this.storageLink && target.pathInfo.name === 'pageTwo') { 
        target.pathStack.pop(); 
        target.pathStack.pushPathByName('pageOne', null); 
      } 
    } 
  } 
}

场景二:返回时弹出确认弹窗。

方案:

设置并开启页面路由拦截registerInterception,如果用户未完成预约直接返回,会进行路由拦截并弹出确认弹窗是否确认返回。

核心代码

设置willShow页面跳转前拦截,判断当从预约页返回时(source.pathInfo.name === ‘appointPageTwo’),会进行路由拦截并弹出确认框是否返回首页,选择确认则clear清栈返回首页。

registerInterception() { 
  let loginIntercept: InterceptionShowCallback = (from: NavDestinationContext | "navBar", to: NavDestinationContext | "navBar") => { 
      if (!this.isUseInterception) { 
        return; 
      } else { 
        //其他destination跳转destination的拦截 
        let source: NavDestinationContext = from as NavDestinationContext; 
        if (source.pathInfo.name === 'appointPageTwo') { 
          console.info("test" + source.pathInfo.name) 
          source.pathStack.pushPathByName('appointPageTwo', null, false); 
          this.dialog.open() 
        } 
      } 
    } 
  this.pageInfos.setInterception({ 
    willShow: loginIntercept 
  }) 
}

以上就是本篇文章所带来的鸿蒙开发中一小部分技术讲解;想要学习完整的鸿蒙全栈技术。可以在结尾找我可全部拿到!
下面是鸿蒙的完整学习路线,展示如下:
1

除此之外,根据这个学习鸿蒙全栈学习路线,也附带一整套完整的学习【文档+视频】,内容包含如下

内容包含了:(ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、鸿蒙南向开发、鸿蒙项目实战)等技术知识点。帮助大家在学习鸿蒙路上快速成长!

鸿蒙【北向应用开发+南向系统层开发】文档

鸿蒙【基础+实战项目】视频

鸿蒙面经

2

为了避免大家在学习过程中产生更多的时间成本,对比我把以上内容全部放在了↓↓↓想要的可以自拿喔!谢谢大家观看!
3

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值