技术解答—app微信小程序中的页面跳转

1. 前言

在微信小程序中,页面之间的跳转是非常常见的操作,如何实现页面的跳转是小程序开发者要学习的基本技能之一。本文将详细介绍微信小程序中页面跳转的方式,并提供相应示例代码,希望能对小程序开发者有所帮助。

2. 页面跳转方式

2.1. 关于页面栈

在进入一个小程序后,微信小程序会为这个小程序创建一个页面栈,用来存储当前打开的所有页面。页面栈采用后进先出的方式,也就是说,栈顶是当前显示的页面,而栈底是小程序的首页。当小程序打开一个新页面时,该页面就会被加入到页面栈中。

在页面栈中,可以通过getCurrentPages()方法获取到当前栈中的所有页面,返回一个数组,数组最后一项就是当前页面。可以在控制台执行以下代码查看:

console.log(getCurrentPages())

2.2. 页面跳转方式

在微信小程序中,可以使用以下方式进行页面跳转:

2.2.1. navigateTo

navigateTo方式可以打开一个新页面,新页面在栈中的位置是当前页面的上一级,也就是说,新页面可以通过左上角的返回按钮返回到当前页面。

使用navigateTo方式进行页面跳转的示例代码如下:

// pages/index/index.js

wx.navigateTo({

url: 'pages/login/login'

})

其中url选项指定要跳转的页面路径,可以是绝对路径或相对路径,绝对路径以/开头,相对路径不以/开头。

2.2.2. redirectTo

redirectTo方式可以关闭当前页面并打开一个新页面,新页面会替换当前页面在页面栈中的位置,也就是说,新页面不能通过左上角的返回按钮返回到当前页面。

使用redirectTo方式进行页面跳转的示例代码如下:

// pages/login/login.js

wx.redirectTo({

url: 'pages/index/index'

})

2.2.3. reLaunch

reLaunch方式可以关闭所有页面并打开一个新页面,新页面会成为页面栈的唯一页面。

使用reLaunch方式进行页面跳转的示例代码如下:

// pages/user/user.js

wx.reLaunch({

url: 'pages/index/index'

})

2.2.4. switchTab

switchTab方式可以跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。

使用switchTab方式进行页面跳转的示例代码如下:

// pages/index/index.js

wx.switchTab({

url: 'pages/home/home'

})

2.2.5. navigateBack

navigateBack方式可以返回到页面栈中的指定页面,也可以返回到页面栈中的任意一个页面。

使用navigateBack方式进行页面跳转的示例代码如下:

// pages/login/login.js

wx.navigateBack({

delta: 2 // 返回两级页面

})

其中delta选项指定返回的页面数,如果没有指定delta,默认返回上一级页面。

3. 页面传参方式

3.1. URL 传参

可以使用 URL 传参的方式在页面之间传递参数。在url选项中可以对目标页面进行传参,例如:

// pages/home/home.js

wx.navigateTo({

url: 'pages/detail/detail?id=123&name=foo'

})

在目标页面可以通过options属性获取传递过来的参数,例如:

// pages/detail/detail.js

Page({

onLoad: function (options) {

console.log(options.id) // 输出:123

console.log(options.name) // 输出:foo

}

})

3.2. Storage 传参

可以使用 Storage 传参的方式在页面之间传递参数。在当前页面可以将参数存储到 Storage 中,然后在目标页面中获取参数,例如:

// pages/home/home.js

wx.setStorageSync('id', '123')

wx.navigateTo({

url: 'pages/detail/detail'

})

// pages/detail/detail.js

Page({

onLoad: function () {

console.log(wx.getStorageSync('id')) // 输出:123

}

})

4. 跳转 API 的限制

4.1. 非 TabBar 页面跳转次数限制

由于页面栈的限制,非 TabBar 页面在单次跳转时最多只能跳转5次。这个限制是为了防止小程序卡死。

4.2. TabBar 页面的 switchTab 限制

switchTab方式只能跳转到 tabBar 页面。

5. 总结

本文中介绍了微信小程序中页面跳转的方式和传参方法,并提供了相应的示例代码。在实际开发过程中,应该根据需求合理选择页面跳转方式,遵守跳转 API 的限制,以提升小程序的用户体验。