微信小程序-(七)页面导航

本文最后更新于:March 28, 2022 pm

微信小程序,小程序的一种,英文名Wechat Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。对于开发者而言,微信小程序开发门槛相对较低,难度不及APP,能够满足简单的基础应用,适合生活服务类线下商铺以及非刚需低频应用的转换。

目录

声明式导航

  • 在页面上声明一个 <navigator> 导航组件。
  • 通过点击 <navigator> 组件实现页面跳转。

导航到tabBar页面

rabBar页面指的是被配置为tabBar的页面。

在使用 <navigator> 组件跳转到指定的tabBar页面时,需要指定 url 属性和 open-type 属性:

  • url表示要跳转到的页面地址,必须以 / 开头。
  • open-type 表示跳转的方式,必须为 switchTab

示例:

1
<navigator url="/pages/message/message" open-type="switchTab">跳转</navigator>

导航到其他页面

即导航跳转到没有被配置到tabBar的页面。和上面类似:

在使用 <navigator> 组件跳转到其他指定的页面时,需要指定 url 属性和 open-type 属性:

  • url表示要跳转到的页面地址,必须以 / 开头。
  • open-type 表示跳转的方式,必须为 navigate

示例:

1
<navigator url="/pages/list/list" open-type="navigate">跳转</navigator>

其中,不写open-type也可以!因为默认就是 navigate 。

后退导航

如果要后退到上一页面或者多级页面,则需要指定 open-type 属性和 delta 属性,其中:

  • open-type 的值必须是 navigateBack,表示要进行后退导航。
  • delta 的值必须是数字,表示要后退的层级。如果只是后退到上一页面,则可以省略 delta 属性,因为默认值为 1。

注意:如果上一级是tabBar页面,则不能返回!即,后退只发生在非tabBar页面上。

示例:

1
<navigator open-type="navigate" delta="1">后退</navigator>

编程式导航

  • 调用小程序的导航API、实现页面的跳转。

导航到tabBar页面

调用 wx.switchTab(Object object) 方法,可以跳转到 tabBar 页面。其中Object参数对象的属性列表有:

属性 类型 必填 说明
url string 需要跳转的tabBar页面的路径,路径后不能带参数
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(成功、失败都会执行)

示例:

1
<button type="warn" bindtap="gotoHome">返回首页</button>
1
2
3
4
5
6
7
8
// pages/list/list.js
Page({
gotoHome(){
wx.switchTab({
url: '/pages/home/home',
})
}
})

导航到其他页面

调用 wx.navigateTo(Object object) 方法,可以跳转到其他页面。其中Object参数对象的属性列表同 导航到tabBar页面 中的属性列表一样。只不过url是跳转到非tabBar页面而已。

示例:

1
<button type="warn" bindtap="gotoOther">发送</button>
1
2
3
4
5
6
7
8
// pages/home/home.js
Page({
gotoOther(){
wx.navigateTo({
url: '/pages/list/list',
})
}
})

后退导航

调用 wx.navigateBack(Object object) 方法,可以返回上一页面或多级页面。其中 Object 参数对象的属性列表有:

属性 类型 必填 说明
delta number 默认值为1。返回的页面数,如果delta大于现有页面数,则返回到首页。
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(成功、失败都会执行)

示例:

1
<button type="warn" bindtap="gotoHome">返回首页</button>
1
2
3
4
5
6
7
8
9
10
11
12
13
// pages/list/list.js
Page({
gotoHome(){
wx.navigateBack({
delta: 1,
})
}
})

//如果是返回一层,也可以这样写
gotoHome(){
wx.navigateBack()
}

导航传参

声明式导航传参

navigator 组件的url 属性用来指定将要跳转到的页面的路径。同时,路径后面还可以携带参数:

  • 参数与路劲之间使用问号(?)分割
  • 参数的键与值用等号(=)相连
  • 不同参数用按位与(&)分割

示例:

1
<navigator url="/pages/list/list?name=long&age=23">list页面</navigator>

编程式导航传参

调用 wx.navigateTo(Object object) 方法跳转页面时,可以携带参数。

示例:

1
2
3
4
5
6
7
8
// pages/home/home.js
Page({
gotoOther(){
wx.navigateTo({
url: '/pages/list/list?username=long&userage=13',
})
}
})

在onLoad中接受导航参数

通过声明式导航传参编程式导航传参所携带的参数,可以直接在 onLoad 事件中直接获取得到。示例:

1
2
3
4
5
6
7
8
9
// pages/home/home.js
Page({
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) { //options 即为导航传递过来的参数对象
console.log(options);
}
})

通过 onLoad 获取参数并赋值:

1
2
3
4
5
6
7
8
9
10
11
12
13
// pages/home/home.js
Page({
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) { //options 即为导航传递过来的参数对象
console.log(options);
this.setData({
cs: options
})
}
})