uniapp微信小程序vue2自定义分享实现

在微信小程序中,可以通过在button组件上设置open-type=share并使用onShareAppMessage方法来自定义分享内容。在单页面中,可以在template中定义button,并在methods中定义onShareAppMessage方法。若需全局实现,可以通过Vue的mixin功能在shares.js中定义该方法,并在main.js中引入。需要注意的是,单页面定义的onShareAppMessage会覆盖全局定义,导致自定义失败时应检查编译后的代码。

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

关键

  • 要使用原生组件button,设置属性为open-type=“share”
  • 要使用原生方法onShareAppMessage来监听分享行为,进行自定义逻辑操作

具体实现

单页面实现

  1. 在template中定义button
  2. 在methods中定义方法onShareAppMessage
<template>
	<button
		open-type="share"
		:data-obj="item"
		class="operate-item"
	>
		<text>转发</text>
	</button>
</template>


<script>
export default {
	data(){
		return {}
	}
	methods:{
		onShareAppMessage(res) {
			// 这里的res对应上面给button传的自定义数据data-obj,可打印出来看看 
            const data = res.target.dataset.obj;
            return {
                title: '自定义分享标题',
                path: `pages/index/index?id=${data.id}`,  // 被分享人点击进来的url,后面可接参数
                imageUrl: data.src, // 自定义分享图片
                success: () => {
                    console.log('分享成功');
                },
                fail: () => {
                    console.log('分享失败');
                },
            };
        },
	}
}
</script>

全局实现

单页面实现无非就是在methods中添加上一个钩子函数onShareAppMessage,那么要是想整个项目中都有这个钩子函数,自然就想到vue的mixin混合功能了
分为两步:

  1. 定义shares.js混合文件
  2. 在main.js中全局引入混合文件
// src/utils/share.js
export default {
    onShareAppMessage(res) {
        const data = res.target.dataset.obj;
        return {
            title: '分享',
            path: `pages/index/index?id=${data.id}`,
            imageUrl: data.src,
            success: () => {
                console.log('分享成功');
            },
            fail: () => {
                console.log('分享失败');
            },
        };
    }
};
// src/main.js
import Vue from 'vue';
import App from './App';
import share from './untils/share'

Vue.mixin(share);

全局混合后,在单页面中便不用再定义onShareAppMessage方法

注意

当在全局定义了onShareAppMessage方法后,要是在单页面再次定义了,单页面会覆盖全局的方法,就会导致自定义失败,但是全局中的方法还是会运行。
因此若是自定义失败的,可以看看编译后的代码中,onShareAppMessage方法里的内容是怎样的进行错误排查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值