广告
返回顶部
首页 > 资讯 > 前端开发 > html >微信小程序中怎么实现页面间跳转传参
  • 813
分享到

微信小程序中怎么实现页面间跳转传参

2024-04-02 19:04:59 813人浏览 独家记忆
摘要

微信小程序中怎么实现页面间跳转传参,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。缓存虽然URL传参比较简单易用,但也有局限性,

微信小程序中怎么实现页面间跳转传参,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

缓存

虽然URL传参比较简单易用,但也有局限性,就是只能传递简单参数,对于复杂的参数就显得无能为力了,但很多时候我们需要传递的是结构比较复杂的数据,这时候很多开发者都会想到用缓存

使用缓存我们有两种方式:小程序自带Storage和Vuex。因为我们的项目是基于mpvue的,顺带也用了vuex了

  • Storage:通过小程序提供的api可以方便的进行缓存操作,如:wx.setStorage、wx.getStorage等。

  • Vuex:这就跟我们平时在做vue项目时一样了,在store中声明一个变量存放传递的参数。

不管是用上面哪种方式,想法都是一样的:在跳转页面之前先把参数保存到缓存,进入页面之后先获取缓存的参数,然后清除缓存中的参数,进行业务操作。大致伪代码如下:

// pageA.vue 
GoToPageB() {
 let arg = {
 name: 'Jack',
 age: 9
 }
 // 先把参数保存到缓存 比如这里用的是小程序的Storage,这里采用同步的方式
 wx.setStorageSync({
 key: 'pageArg',
 data: arg
 })
 wx.navigateTo({
 url: 'pageB'
 })
}


// pageB.vue 
mounted() {
 // 从缓存中取出参数
 let arg = wx.getStorageSync('pageArg')
 // 清除缓存中的页面参数
 wx.removeStorageSync('pageArg')
 // 进行业务处理
 // ...
}

大致就是这么个逻辑,可能具体项目中会对存取缓存进行封装,或者在vuex中的做法又不一样,但思想是一样的。

这样做是可以实现功能,但总感觉不太好,每次都要进行存取操作,感觉很麻烦,而且显得不高端。。。

于是乎,我们想了个方式传递,就是今天的主角:方法调用。

方法调用

这种方式肯定不是最好最优雅的解决方式,因为我们也觉得有欠缺的地方,但目前用起来还是比较方便的,今天放出来也是希望让大家看下怎么进行修改,也以便于我们优化

主要是用了小程序提供的 getCurrentPages 方法,具体内容可查看文档,我这里直接就贴图了,因为文档说的很简单

微信小程序中怎么实现页面间跳转传参

小程序对页面的管理感觉跟浏览器中的history差不多,也是有一个页面栈,每次跳转页面都是往这个栈里push一个页面对象,返回的时候就pop一个,当然具体实现要复杂很多。

这里官方重点提示了:不要尝试修改页面栈,这也就是为什么我说我们的这种传参方式不是很好的原因,我们就是 通过方法修改了这个页面栈的数据 。

带参数返回上一页

具体实现方式

// 往前获取页面对象,类似history.go(-n)
function getPageByPreCount(n) {
 let currentPages = getCurrentPages()
 return currentPages[Math.max(0, currentPages.length - (n + 1))]
}


function returnPrevPage(functionName, ...args) {
 if (functionName) {
 let prevPage = getPageByPreCount(1)
 wx.navigateBack()
 // 方法里手动调用了页面的方法,并把页面参数在这里作为方法参数传递
 prevPage.data.$root[0] && typeof prevPage.data.$root[0][functionName] == 'function' 
 && prevPage.data.$root[0][functionName](...args)
 } else {
 wx.navigateBack()
 }
}

项目中使用,如在搜索页(search.vue)面中有一个过滤条件是用户,但可以选择多个用户,而且选择用户是在另外一个页面(user-pick.vue)里进行的,这就是要从user-picker.vue跳回search.vue,并带回选中的用户列表信息

// user-pick.vue
methods: {
 onSelectConfirm(users) {
 returnPrevPaeg('onSelectUser', users)
 }
}

// user-pick.vue
data() {
 return {
 // 把具体处理还是放到了methods中,如果处理逻辑比较简单也可以直接放这里
 onSelectUser: this.onUserOk
 }
},
methods: {
 onUserOk(users) {
 // 拿到用户信息 进行搜索操作
 // this.search(user)
 }
}

带参数跳转页面

返回上一页还是比较好理解的,因为页面已经在页面栈里存在了,可以取到并调用方法,但对于跳转的就不太好实现了,因为每次跳转页面都是往页面栈里追加一个新的对象,在跳转前无法获取到该对象。

这里就是我说的做的不太好的地方,因为我们采用的是setTimeout方式。。。

// 前进页面回调方法
function navigateTo (url,functionName,...args) {
 triggerNextPageFn('onHide', functionName, ...args)
 // 跳转后处理数据
 wx.navigateTo({url})
}
function redirectTo (url,functionName,...args) {
 triggerNextPageFn('onUnload', functionName, ...args)
 // 跳转后处理数据
 wx.redirectTo({url})
}

// 通用触发后一个页面的方法
function triggerNextPageFn(type, functionName, ...args) {
 let prePage = getCurPage()
 if (functionName) {
 // 保存当前变量
 ((..._args) => {
  let oldEventFn = prePage[type]
  prePage[type] = () => {
  // 前进页面改变onReady方法,这里使用了setTimeout
  setTimeout(() => {
   let newPage = getCurPage()
   let oldOnReady = newPage.onReady
   newPage.onReady = function () {
   newPage.data.$root[0] && typeof newPage.data.$root[0][functionName] == 'function' 
   && newPage.data.$root[0][functionName](..._args)
   oldOnReady.apply(newPage)
   newPage.onReady = oldOnReady
   }
  })
  prePage[type] = oldEventFn
  }
 })(...args)
 }
}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网html频道,感谢您对编程网的支持。

--结束END--

本文标题: 微信小程序中怎么实现页面间跳转传参

本文链接: https://www.lsjlt.com/news/65622.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序中怎么实现页面间跳转传参
    微信小程序中怎么实现页面间跳转传参,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。缓存虽然URL传参比较简单易用,但也有局限性,...
    99+
    2022-10-19
  • 微信小程序怎么实现页面跳转传值
    小编给大家分享一下微信小程序怎么实现页面跳转传值,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信小程序 页面跳转传值实现代码微...
    99+
    2022-10-19
  • 微信小程序中如何实现页面跳转和参数传递
    这篇文章主要为大家展示了“微信小程序中如何实现页面跳转和参数传递”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序中如何实现页面跳转和参数传递”这篇文章吧...
    99+
    2022-10-19
  • 微信小程序zm 实现页面跳转传值
    这篇文章给大家分享的是有关微信小程序zm 实现页面跳转传值的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。微信小程序实现页面跳转传值的方法比如从index。wxml跳转到aaa.w...
    99+
    2022-10-19
  • 微信小程序怎么实现页面跳转功能
    这篇“微信小程序怎么实现页面跳转功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“微信小程序怎么实现页面跳转功能”文章吧。实...
    99+
    2023-07-05
  • 微信小程序实现跳转详情页面
    本文实例为大家分享了微信小程序实现跳转详情页面的具体代码,供大家参考,具体内容如下 我们要实现如下的效果,进入详情页,获取产品的具体数据。本文请求的数据是本地的,实际开发是要通过aj...
    99+
    2022-11-13
  • 微信小程序如何实现页面之间的传参
    这篇文章主要介绍了微信小程序如何实现页面之间的传参,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。微信小程序 传参:实现效果图:微信小程序在两...
    99+
    2022-10-19
  • 微信小程序item怎么页面传参
    微信小程序item页面传参的案例:A页面data-id="{{item.id}}"为标记列表的下标,item.id的来源与wx:for="{{ components }}"的列表渲染bindtap=&...
    99+
    2022-10-19
  • 微信小程序中如何实现页面跳转和数据传递
    这篇文章主要介绍了微信小程序中如何实现页面跳转和数据传递,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。微信小程序 页面跳转和数据传递1.先导...
    99+
    2022-10-19
  • 微信小程序实现点击按钮跳转页面
    微信小程序中点击按钮跳转页面可以使用 wx.navigateTo 或 wx.redirectTo 方法。 首先,在按钮的绑定事件中调用方法,如: 跳转页面 然后,在页面的 js 文件中实现跳转逻辑,如: Page({ ju...
    99+
    2023-10-23
    微信小程序 小程序 前端 javascript 开发语言
  • 微信小程序实现页面跳转动画效果
    微信小程序实现页面跳转动画效果在微信小程序中,页面跳转是一项非常常见的功能。为了提升用户体验,我们可以通过添加动画效果来让页面切换更加流畅和生动。下面我将介绍如何使用微信小程序的API来实现页面跳转动画效果,并附上具体的代码示例。首先,我们...
    99+
    2023-11-21
    动画效果 微信小程序 页面跳转
  • 微信小程序js页面间怎么传值
    本文小编为大家详细介绍“微信小程序js页面间怎么传值”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序js页面间怎么传值”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。  1.js页面间的传值:url: &...
    99+
    2023-06-26
  • 微信小程序怎么传参给当前页面
    微信小程序传参给当前页面的方法:用 navigator标签传值或 wx.navigator。<navigator class="hotCateColumn" url="../detai...
    99+
    2022-10-21
  • 微信小程序如何实现页面间传值
    这篇文章主要介绍“微信小程序如何实现页面间传值”,在日常操作中,相信很多人在微信小程序如何实现页面间传值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序如何实现页面间传值”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-14
  • 微信小程序中如何携带参数跳转到tabBar页面
    在小程序中使用了tabBar组件之后就不能用wx.navigateTo跳转到tabBar页面了 , 能跳转到tabBar页面的方法有以下两种   但是使用第一种方法时,会因为这种方法在路径后不能携带参数,所以行不通 那么就只能用第二种方...
    99+
    2023-09-07
    微信小程序 小程序 前端
  • 微信小程序中如何实现页面跳转及数据传递功能
    这篇文章主要介绍了微信小程序中如何实现页面跳转及数据传递功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。微信小程序 页面跳转及数据传递详解...
    99+
    2022-10-19
  • 微信小程序怎么实现不同页面之间传值
    今天小编给大家分享一下微信小程序怎么实现不同页面之间传值的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。我们在开发微信小程序的...
    99+
    2023-06-26
  • 微信小程序中如何实现多个页面传参通信
    这篇文章给大家分享的是有关微信小程序中如何实现多个页面传参通信的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言微信小程序越来越火,不少公司都在将原生代码转为微信小程序代码。在开...
    99+
    2022-10-19
  • 微信小程序为什么不会跳转页面
    微信小程序不跳转页面的原因有以下几种:没有在app.json文件中的pages选项中注册跳转页面;跳转路径错误,导致跳转失败;跳转路径重复在app.json文件中的TabBar选项中注册,需使用wx.switchTab方法来跳转;...
    99+
    2022-10-17
  • 微信小程序如何实现页面跳转功能详解
    目录前言实现效果事件如何实现事件welcome.wxmlwelcome.js小程序的导航APIwx.redirectTowx.navigateTowx.switchTapObject...
    99+
    2023-05-13
    微信小程序的页面跳转 小程序怎么跳转页面 微信小程序跳转到其他页面
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作