在微信小程序中,可以通过以下几种方式获取路由传参的数据:
-
使用
getCurrentPages
方法获取当前页面栈的实例数组,其中数组的最后一项即为当前页面的实例。通过该实例可以获取到页面的options
属性,该属性包含了路由传递的参数信息。示例代码如下:const currentPage = getCurrentPages()[getCurrentPages().length - 1]; const options = currentPage.options; console.log(options);
在上述代码中,
getCurrentPages()
方法返回当前页面栈的实例数组,通过下标[getCurrentPages().length - 1]
获取当前页面的实例,然后使用options
属性获取到路由传递的参数信息。 -
在配合路由跳转时,可以使用
navigateTo
、redirectTo
、switchTab
等跳转方法,将参数以查询字符串的形式拼接到目标页面的URL中。在目标页面的onLoad
生命周期函数中,可以通过options
参数获取到传递的参数信息。示例代码如下:// 跳转时传递参数 wx.navigateTo({ url: '/pages/targetPage/targetPage?id=123&name=John', }); // 目标页面接收参数 Page({ onLoad: function (options) { console.log(options); // 输出:{ id: '123', name: 'John' } }, });
在上述代码中,
navigateTo
方法用于跳转到目标页面,并在URL中携带参数id
和name
。在目标页面的onLoad
生命周期函数中,通过参数options
获取到传递的参数信息。 -
如果使用了微信小程序自带的
<navigator>
组件进行页面跳转,可以在目标页面的onLoad
生命周期函数中通过getCurrentPages
方法获取到页面栈中的前一个页面实例,然后通过实例的eventChannel
属性传递参数。示例代码如下:// 前一个页面传递参数 wx.navigateTo({ url: '/pages/targetPage/targetPage', events: { // 通过 eventChannel 传递参数 acceptDataFromOpenerPage: function (data) { console.log(data); // 输出:{ id: '123', name: 'John' } }, }, success: function (res) { // 通过 eventChannel 向目标页面传递参数 res.eventChannel.emit('acceptDataFromOpenerPage', { id: '123', name: 'John' }); }, }); // 目标页面接收参数 Page({ onLoad: function (options) { const eventChannel = this.getOpenerEventChannel(); eventChannel.on('acceptDataFromOpenerPage', function (data) { console.log(data); // 输出:{ id: '123', name: 'John' } }); }, });
在上述代码中,通过
events
和success
参数实现了页面间传递参数的功能。在前一个页面中使用eventChannel.emit
方法向目标页面传递参数,在目标页面的onLoad
生命周期函数中通过getOpenerEventChannel
方法获取到前一个页面传递的参数。
这些是获取路由传参数据的几种常用方式。根据你的具体需求和场景选择合适的方法进行参数获取。
希望对你有所帮助!如果还有其他问题,请随时提问。