微信小程序:路由

  • 路由跳转
  • 页面数据通讯

 一、路由跳转

1.先来一个最简单的示例:

//index.wxml 部分关键代码
 <text class="welcome" catchtap="toNextPageTap">跳转到inside页面</text>
//index.js
Page({
  toNextPageTap: function(event) {
    wx.reLaunch({
      url: "/pages/inside/inside"
    })
  }
})

catchtap是事件监听属性,详细了解官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html

以上的代码就可以实现一个页面跳转了,示例中的目标页面没有演示了。小程序的路由目前有五个页面跳转API,还有一组EventChannel页面数据通讯API,这一节先来介绍一下路由跳转API。

wx.switchTab:跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。

wx.reLaunch:关闭所有页面,打开到应用内的某个页面。

wx.redirectTo:关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。

wx.navigateTo:保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。

wx.navigateBack:关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层。

关于路由跳转API值得注意的问题:

1.什么是tabBar页面:就是页面是否被配置为底边栏的跳转页面,如果被配置了就不能被wx.redirectTo、wx.navigateTo跳转(报错)。

{
  "pages": [
    "pages/index/index",
    "pages/inside/inside"
  ],
  "tabBar": {
    "list":[{
      "pagePath": "pages/index/index",
      "text": "首页"
    },{
      "pagePath": "pages/inside/inside",
      "text": "日志"
    }]
  },
  "style": "v2",
  "sitemapLocation": "sitemap.json"
}

2.关闭页面是什么意思?

所谓关闭页面相当于将页面数据清除,就不能使用回退图标回退或者wx.navigateBack跳转了,因为关闭清除也就是将其从页面栈中清除,并且页面栈最多也只能保存十个页面。

 二、页面数据通讯:EventChannel

 我当前的开发环境是2.12.1,还不能测试这个API,这个API最低兼容的版本是2.7.3。现在官方文档也就只有介绍,没有示例代码:https://developers.weixin.qq.com/miniprogram/dev/api/route/EventChannel.html

如果有兴趣可以参考这篇博客:https://blog.csdn.net/lqw200931116/article/details/100775320

虽然不能测试,这里我可以提示一下,这个API有点类是vue中使用自定义事件实现组件传值的效果,不过这里是页面之间传值。

原文地址:https://www.cnblogs.com/ZheOneAndOnly/p/13643167.html