关于⼩程序页⾯⽆法跳转的问题
⼀、⼩程序跳转的API
1、wx.nav ig ate T o(ob j)保留当前页⾯,跳转到应⽤内的某个页⾯
wx.navigateTo({ url: 'test?id=1' })
2、wx.r e d ir e ctT o(OB JE C T)关闭当前页⾯,跳转到应⽤内的某个页⾯。
3、wx.nav ig ate B ack(OB JE C T)关闭当前页⾯,返回上⼀页⾯或多级页⾯
wx.navigateBack({ delta: 2 })
4、wx.s witchT ab(OB JE C T)跳转到 tab B ar 页⾯,并关闭其他所有⾮ tab B ar 页⾯
wx.switchTab({ url: '/index' })
5、wx.r e L aunch(OB JE C T)关闭所有页⾯,打开到应⽤内的某个页⾯。
⼆、出现不能跳转的情况,可能有这是三种
要跳转的路径是不是在app.js⾥注册过,或者路径写错了
要跳转的路径是否位于TabBar中,如果是的话,要使⽤wx.switchTab 来跳转界⾯
页⾯路径最多只能是10层,即是页⾯栈中的元素不能超过10个,
三、举例说明
现有A、B、C、D四个页⾯。A为最先打开的页⾯,⼩程序启动后,在A页⾯中通过navigateTo跳转到B页⾯,然后在B页⾯再通过navigateTo 跳转到C页⾯。此时页⾯栈中包含三个元素,分别为A、B、C三个页⾯
现在再通过redirectTo跳转到D页⾯,redirectTo会将当前页⾯出栈,即将C页⾯出栈,再将D页⾯⼊栈这时页⾯栈中的元素则变为A、B、D
此时如果在 D 页⾯调⽤ navigateBack,会发现不是返回 C 页⾯,⽽是返回到了 B 页⾯。因为 navigat
eBack 将栈中最后⼀个元素(D 页⾯)出栈后,页⾯栈的内容则变为 A、B。页⾯栈最后⼀个元素为 B 页⾯,即当前显⽰的会是 B 页⾯。
综上所述「页⾯路径」限制为⼗层,其实就是规定了页⾯栈中的元素不能超过⼗个。页⾯栈中元素达到⼗个后,就不能增加了。
写文章的小程序navigateTo 不会将旧页⾯出栈,因此通过 navigateTo 跳转后,页⾯栈中元素个数会加⼀,因此在页⾯栈中元素个数达到 10之后再调⽤navigateTo 会失败,出现⽆法跳转的错误。
⽽ redirectTo 会在将旧页⾯出栈后,再将新页⾯⼊栈,因此通过 redirectTo 跳转,页⾯栈中元素个数会保持不变,因此即使在页⾯栈中元素达到 5 个之后再调⽤ redirectTo 也能成功跳转。
四、总结
⼩程序上线以后就发现了这个问题,点击按钮没有反应,页⾯跳转不了,看了代码没有什么问题,猜测原因可能就是页⾯栈中的元素达到了上限,然后就开始根据猜测操作,发现⼀直从⽂章列表进到⽂章详情,在点击重新编辑在保存,保存成功之后跳转到⽂章列表。但是上个⽂章列表并没有出栈。就这个⼀直重新编辑保存就会⼀直往页⾯栈⾥放元素,直到在点击跳转页⾯失效。
我是在重新编辑完点击保存之后⽤wx.navigateBack({delta: 2})
写完这篇⽂章发现好像没有判断新建的时候也让返回了2,直接返回到了⾸页。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论