前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序页面路由

微信小程序页面路由

作者头像
菲宇
发布2019-10-22 14:46:29
1.2K0
发布2019-10-22 14:46:29
举报
文章被收录于专栏:菲宇

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

本文链接:https://blog.csdn.net/bbwangj/article/details/101694124

在小程序中所有页面的路由全部由框架进行管理。框架以栈的形式维护了当前的所有页面。

当发生路由切换的时候,页面栈的表现如下:

路由方式

页面栈表现

初始化

新页面入栈

打开新页面

新页面入栈

页面重定向

当前页面出栈,新页面入栈

页面返回

页面不断出栈,直到目标返回页,新页面入栈

Tab 切换

页面全部出栈,只留下新的 Tab 页面

重加载

页面全部出栈,只留下新的页面

getCurrentPages()

getCurrentPages()函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。

路由方式

对于路由的触发方式以及页面生命周期函数如下:

路由方式

触发时机

路由前页面

路由后页面

初始化

小程序打开的第一个页面

onLoad, onSHow

打开新页面

调用 API wx.navigateTo 或使用组件 <navigator open-type="navigateTo"/>

onHide

onLoad, onShow

页面重定向

调用 API wx.redirectTo 或使用组件 <navigator open-type="redirectTo"/>

onUnload

onLoad, onShow

页面返回

调用 API wx.navigateBack 或使用组件<navigator open-type="navigateBack">或用户按左上角返回按钮

onUnload

onShow

Tab 切换

调用 API wx.switchTab 或使用组件 <navigator open-type="switchTab"/> 或用户切换 Tab

各种情况请参考下表

重启动

调用 API wx.reLaunch 或使用组件 <navigator open-type="reLaunch"/>

onUnload

onLoad,

wx.navigateTo(OBJECT)

保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面。

OBJECT 参数说明:

参数

类型

必填

说明

url

String

需要跳转的应用内非 tabBar 的页面的路径 , 路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2'

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

示例

代码语言:javascript
复制
wx.navigateTo({
  url: 'test?id=1'
})

wx.redirectTo(OBJECT)

关闭当前页面,跳转到应用内的某个页面。

OBJECT 参数说明:

参数

类型

必填

说明

url

String

需要跳转的应用内非 tabBar 的页面的路径,路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2'

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

示例代码:

代码语言:javascript
复制
wx.redirectTo({
  url: 'test?id=1'
})

wx.navigateBack(OBJECT)

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

OBJECT 参数说明:

参数

类型

默认值

说明

delta

Number

1

返回的页面数,如果 delta 大于现有页面数,则返回到首页。

代码语言:javascript
复制
wx.navigateBack({
  delta: 2
})

wx.switchTab(OBJECT)

跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面

OBJECT 参数说明:

参数

类型

必填

说明

url

String

需要跳转的 tabBar 页面的路径(需在 app.json 的 tabBar 字段定义的页面),路径后不能带参数

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

代码语言:javascript
复制
wx.switchTab({
  url: '/index'
})

wx.reLaunch(OBJECT)

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

OBJECT 参数说明:

参数

类型

必填

说明

url

String

需要跳转的应用内非 tabBar 的页面的路径 , 路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 'path?key=value&key2=value2',如果跳转的页面路径是 tabBar 页面则不能带参数

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

示例代码:

代码语言:javascript
复制
wx.reLaunch({
  url: 'test?id=1'
})

navigator

页面链接。

属性名

类型

默认值

说明

target

String

self

在哪个目标上发生跳转,默认当前小程序,可选值self/miniProgram

url

String

应用内的跳转链接

open-type

String

navigate

跳转方式

delta

Number

当 open-type 为 'navigateBack' 时有效,表示回退的层数

app-id

String

当target="miniProgram"时有效,要打开的小程序 appId

path

String

当target="miniProgram"时有效,打开的页面路径,如果为空则打开首页

extra-data

Object

当target="miniProgram"时有效,需要传递给目标小程序的数据,目标小程序可在 App.onLaunch() ,App.onShow() 中获取到这份数据。

version

version

release

当target="miniProgram"时有效,要打开的小程序版本,有效值 develop(开发版),trial(体验版),release(正式版),仅在当前小程序为开发版或体验版时此参数有效;如果当前小程序是正式版,则打开的小程序必定是正式版。

hover-class

String

navigator-hover

指定点击时的样式类,当hover-class="none"时,没有点击态效果

hover-stop-propagation

Boolean

false

指定是否阻止本节点的祖先节点出现点击态

hover-start-time

Number

50

按住后多久出现点击态,单位毫秒

hover-stay-time

Number

600

手指松开后点击态保留时间,单位毫秒

bindsuccess

String

当target="miniProgram"时有效,跳转小程序成功

bindfail

String

当target="miniProgram"时有效,跳转小程序失败

bindcomplete

String

当target="miniProgram"时有效,跳转小程序完成

open-type 有效值:

说明

navigate

对应wx.navigateTo的功能

redirect

对应wx.redirectTo的功能

switchTab

对应wx.switchTab的功能

reLaunch

对应wx.reLaunch的功能

navigateBack

对应wx.navigateBack的功能

exit

退出小程序,target="miniProgram"时生效

代码语言:javascript
复制
  <navigator url="/page/navigate/navigate?title=navigate" hover-class="navigator-hover">跳转到新页面</navigator>
  <navigator url="../../redirect/redirect/redirect?title=redirect" open-type="redirect" hover-class="other-navigator-hover">在当前页打开</navigator>
  <navigator url="/page/index/index" open-type="switchTab" hover-class="other-navigator-hover">切换 Tab</navigator>

注意:

  • navigateTo,redirectTo只能打开非 tabBar 页面。
  • switchTab 只能打开 tabBar 页面。
  • reLaunch 可以打开任意页面。
  • 页面底部的 tabBar 由页面决定,即只要是定义为 tabBar 的页面,底部都有 tabBar。
  • 调用页面路由带的参数可以在目标页面的onLoad中获取。

参考:https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.switchTab.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • getCurrentPages()
  • 路由方式
  • wx.navigateTo(OBJECT)
  • wx.redirectTo(OBJECT)
  • wx.navigateBack(OBJECT)
  • wx.switchTab(OBJECT)
  • wx.reLaunch(OBJECT)
  • navigator
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档