微信小程序系列3——页面跳转详解

前言

  首先,微信页面跳转的是一个页面栈进栈出栈的过程,也可以简单的理解对页面跳转的操作就是一个栈的操作。

微信小程序主要一下两类样式的跳转(JS、WXML控件):

<font color=red>JS控制的跳转:</font>

  • navigation 栈的形式(导航栏)
  • tabBar 标签栏
  • 其他

<font color=red>WXML模板内控件控制的跳转方法</font>

  • navigator

一、navigation页面跳转

1.wx.navigateTo({ url: 'pageA' })

navigateTo方式 跳转的应用内非 tabBar 的页面的路径,页面之间不能像IOS或者Android对页面进行赋值进行传递对象,只能像Web的URL地址一样,在路径后可以带参数。

1)参数和路径之间使用?分隔,参数键与参数值用=相连。

wx.navigateTo({
  url: 'pageA?id=1'
})

2)不同参数用&分隔

wx.navigateTo({
  url: 'pageA?id=1&token=222'
})

navigateTo的导航栏默认有返回按钮,返回到上一个页面。

2.wx.navigateBack({})

navigateBack和navigateTo是一对,navigateTo是页面进栈操作,navigateBack是页面出栈操作。navigateBack默认返回到上一级页面(内部参数:delta:1)。

参数 类型 默认值 描述
delta Number 1 返回的页面数;如果delta大于现在页面,则页面栈的第一个页面

// 此处是A页面    
wx.navigateTo({
  url: 'B'
})
 
// 此处是B页面
wx.navigateTo({
  url: 'C'
})
 
// 在C页面内 navigateBack,将返回A页面
wx.navigateBack({
  delta: 2
    // delta > 2 都会返回A页面    A页面之前没有navigate的页面
})

二、tabBar页面跳转

tabBar中的页面需要在app.json中配置,tabBar页面最少2页面,最多5个页面。tabBar之间的跳转采用wx.switchTab({ url: '' })的方式,默认情况下tabBar之间的页面跳转,只需要点击tabBar上对应的控件就可以相互跳转。(注:tabBar之间的跳转,路径后不能带参数)

wx.switchTab({
      url: 'switchA',
  })

tabBar上的页面的跳转只能采用switchTab的方式。其他页面跳转到tabBar上也必须采用switchTab的方式跳转。

三、其他页面跳转

1.wx.redirectTo({url: ''})(<font color=#0099ff>跳转的下一个页面,存在默认返回按钮<font>)

redirectTo跳转非tabBar页面的路径,路径后可以带参数。(带参数可以参考:navigateTo)

wx.redirectTo({
  url: 'redirectA?id=1'
})

跳转下一个页面默认有返回按钮,返回到上一个页面的再上一层。

2.wx.reLaunch({url: ''})(<font color=#0099ff>跳转的下一个页面,有一个返回首页的按钮<font>)

redirectTo跳转非tabBar页面的路径,路径后可以带参数。(带参数可以参考:navigateTo)

wx.reLaunch({
  url: 'reLaunchA?id=1'
})

跳转下一个页面默认有返回首页,返回到首页。(页面栈的第一个页面)

四、navigator组件---页面跳转(WXML内组件,其他的都是JS中操作)

navigator作为一个跳转的WXML模板中的控件,其他几种的操作都是在JS中的操作。下边详细介绍navigator控件的属性和使用说明

属性 类型 默认值 描述说明
target String 当前小程序 在哪个目标程序上发生跳转,默认当前小程序
url String 当前小程序内的跳转链接 (后面可以携带参数,除switchTab之外)
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"时有效,跳转小程序成功
binderror String 当target="miniProgram"时有效,跳转小程序失败
bindcomplete String 当target="miniProgram"时有效,跳转小程序完成

target 的合法值

target值 描述说明
self 当前小程序
miniProgram 其它小程序

open-type 的合法值:

open-type值 描述说明
navigate 对应 wx.navigateTo 或 wx.navigateToMiniProgram 的功能
redirect 对应 wx.redirectTo 的功能
switchTab 对应 wx.switchTab 的功能
reLaunch 对应 wx.reLaunch 的功能
navigateBack 对应 wx.navigateBack 的功能
exit 退出小程序,target="miniProgram"时生效

version 的合法值

说明
develop 开发版
trial 体验版
release 正式版,仅在当前小程序为开发版或体验版时此参数有效;如果当前小程序是正式版,则打开的小程序必定是正式版。

下面是navigator的例子:

<!-- sample.wxml -->
<view class="btn-area">
  <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>
  <navigator target="miniProgram" open-type="navigate" app-id="" path="" extra-data="" version="release">打开绑定的小程序</navigator>
</view>

微信小程序页面跳转的功能基本就这些内容,微信小程序页面跳转方式和Android、iOS的方式非常相似之处,可以相互结合理解。

本文章的内容参考自《微信官方文档》

持续更新中……

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容