开发公司商城小程序期间,遇到一个需求,用户订单列表页每个订单下方有一个分享按钮,希望用户点击不同按钮分享出去的title,path不一样。
在开发工具里面试了下,点击分享按钮通过setData的方式定义title,path.,发现在
onShareAppMessage里面获取不到。
换了一种方式,将title,path在页面初始化时候,默认为第一个订单相关的数据,分享的时候可以获取到title,path,但是点击按钮分享的数据总是上一次的数据。
请问这种情况怎么解决,是我哪里处理错了吗
框架类型 | 终端类型 | 操作系统 | 微信版本 | 基础库版本 |
---|---|---|---|---|
小程序 | 客户端 | Android | 6.6.3 | 1.9.91 |
//一个循环列表放一个分享按钮,然后设置相应的分享内容。 <ul> <li v-for="(item,index) in list" :key="index"> <button open-type="share" :data-title="item.title" :data-img="item.img" :data-id="item.id" v-if="item.isShow==1">分享</button> </li> </ul> //分享设置获取分享按钮点击时的值来实现不同文章的分享功能。 onShareAppMessage(res){ let title = res.target.dataset.title let id = res.target.dataset.id let img = res.target.dataset.img return { title: title, path: '/pages/article/index?id=' + id, imageUrl: img, } },
这个方法不错,可用
在button设置数据
你这么做肯定有问题的 setdata是需要时间的 当你拉起分享当时候 setdata可能还没生效 正确的做法是都保存在button里 直接通过event.target.dataset.xxxxx获取数据拼接即可
onShareAppMessage:function(event){
let dataset = event.target.dataset;
}
之前我有向官方反馈过,官方回复会优化,并没有解决方法,分享是所有事件中最快的
@清风,是的,我打印数据是这样的结果,那么请问有解决方案吗?
问题出在你分享触发的事件,比你获取数据要快,我以前好像就测试过
好的,非常感谢您的热情回复
没有做过这种场景,我们一般都是在详情页进行转发