getCurrentPages()的用法
getCurrentPages()是个好东西,今天来说说他的用法。
先看看官方文档:
[路由 · 小程序]:https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/route.html
getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
简单说,就是可以获取到当前小程序的页面栈
那么,获取到页面栈,有什么用处呢?
1、判断页面栈是否超过10级,超过10级,将不能打开新页面(主要是不用用navigateTo方式打开)。
2、可以修改某个页面栈的data数据,或者方法。
这里给大家分享一个实际应用场景:仅发起者可分享。
有些投票、通知、抽奖、签到等,发起者会在私密的圈子内进行,比如,仅会员群才能参与的抽奖、公司内部的通知公告、班级内部的投票等。发起者是不希望别人分享出去,那么小程序里面要怎么做?
说到分享,在小程序内,应该是想到onShareAppMessage这个方法。只要page.js中有这个方法,不管你是否在内部写了代码逻辑,小程序默认就是可以分享的,如果没有这个方法,小程序右上角的“…”就不会出现“转发”的选项。
问题是,是否允许分享,一般都是小程序内的一个开关设置项,可以看下图:
用户在加载内容时,需要先从服务端获取到这个开关状态,再决定是否出现“转发”的选项。
此时,我们默认不给page添加onShareAppMessage方法,这样,你转发出去的小程序卡片,别人将无法通过长按进行分享(群聊无法长按分享,私聊还是个坑,看下图)。
然后再动态设置当前page的onShareAppMessage方法,用this,或者getCurrentPages()都能解决,看下图:
目前私聊的卡片,长按依然可以转发,似乎不是很完美,但是,功能基本实现了。
如果想让私聊卡片的转发无效,你也可以变通一下,比如做个限群成员可见功能,即使私聊卡片被转发,可以判断小程序场景值,不展示内容即可~
1、用wx.getLaunchOptionsSync() 获取小程序启动时的参数:
2、判断群聊和私聊的场景值:
3、如果是微信私聊中打开,给用户提示即可~
欢迎各位一起讨论技术问题:mianhuabingbei
“此时,我们默认不给page添加onShareAppMessage方法,这样,你转发出去的小程序卡片,别人将无法通过长按进行分享(群聊无法长按分享,私聊还是个坑,看下图)”
这段意思是用Button分享?