小程序的路由跳转

  • Post author:
  • Post category:小程序


navigateBack是返回到navigateTo跳转的页面,由于navigateTo是保留当前页面打开新页面,所以navigateBack返回的是navigateTo保留的页面所以不会触发返回页面(目标)的onload事件。

switchTab是关闭所有非tab页面,如果之前已经打开过了tab页面那么该路由是不会关闭该tab页面的,跳转到该tab页面时只会触发该页面的onshow不会触发onload,如果之前没有打开过那么会触发一次onlaod。

navigateTo是保留当前页面打开新页面,打开的新页面是堆放在当前页面上一层的,所以即使打开的新页面与当前页面时同一个页面,那么也是会重新触发新页面的onlaod事件的,因为是新打开的页面而且是堆放在当前页面上层的,是完全独立的两个页面。

除了navigateBack、switchTab其他路由都是新打开页面都是会触发目标页面的oload。小程序的页面都是放在栈中的,页面栈最多十层,所以每次路由打开新页面要么是保留原来的页面同时新页面入栈,要么是关闭原来的页面新页面入栈,新页面会在页面栈中层层堆叠,即使以前打开过。

小程序每次通过分享转发搜索扫码进入时都会重新走初始化路由,清空页面栈中的所有页面,进而打开默认页面或码中带的路径的页面,此时都会重新触发默认路径页面的onload事件。只是重新分享转发搜索扫码时如果此时小程序没有销毁的话不会再次触发appjs的onlaunch事件。

在js中如果触发路由,如果在路由后不写return的话那么写在路由后边的代码依然会执行,并不会阻断js的执行,所以写在app.js或者某些页面(onshow等)生命周期中或者写在点击事件中的路由跳转,如果路由跳转后边没有return,那么即使页面发生了跳转,路由后边的代码也是会执行的,虽然像navigateTo这些路由会关闭当前页面,但是路由后的代码还是会执行的。因为浏览器引擎是会预先预览全局所有js的,并不会因为页面的跳转关闭而被阻断,除非把整个浏览器关掉。



版权声明:本文为sinat_38728634原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。