uniapp小程序分享功能onShareAppMessage函数传参数

本文介绍如何在微信小程序中实现分享功能。主要通过定义onShareAppMessage函数和使用带有open-type属性值为share的button组件来完成。文章还提供了具体代码示例说明如何设置分享的信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、使用onShareAppMessage函数。在页面的js文件中定义了 onShareAppMessage 函数时,页面可以表示该页面可以转发。可以在函数中设置页面转发的信息。
(1)只有定义了该函数,小程序右上角的菜单中才会有转发按钮
(2)用户点击转发按钮的时候回调用该函数
(3)该函数内需要 return 一个 Object,Object中包含转发的信息(可自定义转发的内容)

2、一个是页面中具有属性open-type且其值为share的button。(注:必须是button组件,其他组件中设置 open-type=“share” 无效)

即:<button data-name="shareBtn" open-type="share">转发</button>

注意!!! onShareAppMessage是页面的方法, 组件内不会触发。

小程序中分享功能需要在button组件中添加open-type:“share”,当点击button的时候就会调用onShareAppMessage函数。如果需要将按钮的参数传入给函数,使用       :data-属性=值

html:

<view class="activity-box" v-for="(item,index) in activity" >
					<view class="activity-title flex between center-v">
						<view class="title text-ellipsis">
								{{item.theme}}
						</view>
						<button type="default"  open-type="share" :data-item='item'>
						    <image :src="getStaticIconPath('icon-zhuanfa.png')" mode="" class="_inco"></image>
						</button>
					</view>
</view>
					
js:

//分享函数
		onShareAppMessage(res) {
			console.log(res,'我是分享');  //打印出来的就是:data-item='item'里的'item'值
                                         //也就是循环里的item值,循环里的每一项

            const that = this;
			let data = res.target.dataset.item; //取到传入的参数

            let shareobj = {
				title:'',//分享的标题    默认是小程序的名称
				path:"",//好友点击分享之后跳转的页面   默认是当前页面,必须是以‘/’开头的完整路径
				imageUrl: "",//自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径,支持PNG及JPG,不传入 imageUrl 则使用默认截图。显示图片长宽比是 5:4
			}

            //来自页面按钮内的分享
			if(res.from === 'button'){
				shareobj.title="",   //你要分享的标题
                shareobj.path="",    //你要跳转的页面路径
                shareobj.imageUrl="",//你要分享的图片
			}

			return shareobj//最后一定要返回对象

		},

效果图如下: (console.log(res,'我是分享'))

### 实现 UniApp 小程序分享时自定义分享图片 在 UniApp 中,`onShareAppMessage` 方法用于配置页面的转发行为。为了实现自定义分享图片的功能,可以通过 `imageUrl` 属性指定要显示的缩略图地址。 当需要异步获取资源(如保存图片),应确保这些操作完成后再返回分享信息对象。下面是一个完整的例子展示如何通过 Promise 处理图像保存逻辑,并将其应用于分享链接: ```javascript // 定义 saveImage 函数作为 promise 返回结果 function saveImage() { return new Promise((resolve, reject) => { // 假设这里执行一些网络请求或其他异步任务来保存图片 setTimeout(() => { resolve({ code: 200 }); // 成功状态码模拟 }, 1000); }); } export default { methods: { async onShareAppMessage() { try { const saveRes = await saveImage(); if (saveRes.code === 200) { return { title: '这是一个测试标题', path: '/pages/index', // 跳转路径 imageUrl: 'https://example.com/path/to/image.jpg' // 自定义分享封面图URL }; } } catch (error) { console.error('Failed to get image:', error); } } } } ``` 此代码片段展示了如何创建一个名为 `saveImage` 的辅助函数,它会返回一个新的 Promise 对象,在这个案例里简单地使用了定时器来模仿实际场景下的延迟加载过程;接着是在组件的方法属性下定义了一个带有 `async/await` 关键字修饰符版本的 `onShareAppMessage()` 方法,用来等待上述提到的操作完成后才给出最终的结果给微信小程序平台去渲染分享卡片[^1]。 需要注意的是,`imageUrl` 应指向有效的远程 URL 或者本地静态资源路径,这样才能保证用户能够看到预期中的预览效果。此外,还可以根据业务需求调整其他字段比如 `title`, `path` 来定制更丰富的用户体验[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值