微信小程序从分享卡片进入第一次获取不到uid
约 563 字大约 2 分钟
2025-07-04
用 uni-app 开发微信小程序时,有一个需求是:
分享罐表详情页面给其它用户,其它用户(在已经登录的状态下)点击分享卡片可以直接跳转到该罐表详情页,且能显示自己是否已经收藏该罐表(收藏状态由用户 uid 和罐表 id 共同确定)
实现分享功能
基本思路是用 微信原生的 onShareAppMessage 实现。
因为开发框架用的是 uni-app,所以微信原生文档和 uni-app 的文档都要看。
path 是其它用户点击分享卡片直接进入的页面,不写默认是分享的当前页面。
在 onShareAppMessage 的 path
中传递的参数,由下一页面的 onLoad(option)
接收。
以上是微信小程序实现页面分享的基础功能。
遇到 bug
但是实现分享功能后,我遇到的一个 bug :
其它用户点分享卡片第一次进入小程序后不能正确获取 uid,第二次进入小程序才能正确获取 uid。
第一次进入小程序:
第二次进入小程序:
解决 bug
我参考了丹尼斯小程序,发现可以 先跳转到 home 页面,然后再自动跳转到详情页。
于是我设置了:
罐表详情页面的分享设置 path 为 home(而不是当前页面),然后从 home 跳转到罐表详情,这样就可以正确显示页面数据了。
丹尼斯小程序效果如下:
示例代码
【罐表详情.vue】
onShareAppMessage(options) {
var msg = "我给你分享了一个罐表,快来点击查看吧";
return {
title: msg, // 转发后 所显示的title
path: '/pages/home/home?id=' + this.id
}
},
【home.vue】
onLoad(option) {
var scene = wx.getLaunchOptionsSync().scene; //获取场景值,判断是用哪种方式进入的小程序
if (scene == 1007 || scene == 1008 || scene == 1044) { //从分享进入
if (option.id) {
uni.navigateTo({
url: '../subpage/tableMarket/marketSeeTable/marketSeeTable?id=' + option.id
})
}
}
}