连续调用wx.navigateTo会跳转失败
发布于 6 年前 作者 ping11 11577 次浏览 来自 问答

问题概述

在wx.navigateTo的success回调函数中继续调用wx.navigateTo,页面跳转与预期不一致。

复现方法

1. 使用代码片段 https://developers.weixin.qq.com/s/PbxxKcmZ7Q7e

  1. 点击页面中的navigate按钮,将会通过递归进行多次页面跳转,代码如下:
const NAVIGATE_COUNT = 5;
 
const navigate = (times) => {
  const url = `/page/index?times=${times}`;
  console.log('navigate to', url);
  wx.navigateTo({
    url,
    success(res) {
      console.log('success', times, res);
      if (times > 1) {
        navigate(times - 1);
      }
    },
    fail(res) {
      console.log('fail', times, res);
    }
  })
}
navigate(NAVIGATE_COUNT);
  1. 在模拟器和iOS上,会出现页面历史丢失的现象(可以通过后退查看页面栈,会发现数量比预期的少);在Android上没有此问题

  2. 点击页面中的navigate with timeout按钮,该按钮与前者的区别在于会在success后使用setTimeout延迟300ms再进行调用

success(res) {
  console.log('success', times, res);
  if (times > 1) {
    navigate(times - 1);
  }
},
  1. 在模拟器/iOS/Android中均可以正常跳转
3 回复

请问这样跳转的具体使用场景是什么?

这种tab切换一直点就会出现问题,脑瓜疼!

很好奇这是什么需求

回到顶部