x***@sina.com
x***@sina.com
  • 发布:2022-06-08 11:12
  • 更新:2022-06-08 11:12
  • 阅读:228

【报Bug】页面授权执行了路由back导致返回页面时触发了不该触发的钩子函数

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10 21H2(64位)

浏览器平台: 微信内置浏览器

浏览器版本: 8.0.23

项目创建方式: CLI

CLI版本号: 4.5.16

示例代码:

B页面:

onShow() {  
    // 所有授权完成后,刷新B页面,然后返回A页面会触发这个输出。在手机微信内置浏览器上操作的  
    console.log(this.$Route.path)  
    if (this.$Route.path === "/pages/pay/payCreate") {  
      this.initPayAuth()  
    }  
  },  
  methods: {  
    initPayAuth() {  
      this.type = Number(this.$Route.query.type)  
      // 获取链接中的授权code  
      const payCode = this.$Route.query.payCode  
      // 获取缓存中的授权code  
      const storagePayCode = getPayParams() || ""  
      if (!storagePayCode && !payCode && !this.isCancelPay) {  
        //  进行支付授权  
        if (isWechat()) {  
          getPayAuthCode()  
          return false  
        }  
      } else if (payCode) {  
        // 进行缓存  
        setPayParams(payCode)  
        this.$Router.back(2)  
      }  
    }  
  }

操作步骤:

使用uni-simple-router插件进行路由管理
A页面到B页面,B页面进行授权操作,携带B页面链接为返回URL,先跳转至公司服务端再跳转至银行授权,授权完成后,携带授权参数返回至B页面,这时把授权参数缓存到本地,然后执行this.$Router.back(2),这时还在B页面,然后刷新B页面,返回A页面时会触发B页面onShow生命周期钩子函数,但是在B页面onSHow里面输出this.$Route.path时,值是A页面的path。

预期结果:

返回A页面时不触发B页面onShow

实际结果:

返回A页面时触发了B页面onShow

bug描述:

使用uni-simple-router插件进行路由管理
A页面到B页面,B页面进行授权操作,携带B页面链接为返回URL,先跳转至公司服务端再跳转至银行授权,授权完成后,携带授权参数返回至B页面,这时把授权参数缓存到本地,然后执行this.$Router.back(2),这时还在B页面,然后刷新B页面,返回A页面时会触发B页面onShow生命周期钩子函数,但是在B页面onSHow里面输出this.$Route.path时,值是A页面的path。

2022-06-08 11:12 负责人:无 分享
已邀请:

要回复问题请先登录注册