uni-app -- 小程序分享遇到的问题

关于小程序分享的问题,该需求很常见。在uni-app中如何能够优雅的配置每个页面都有分享功能呢?

1. 全局混入mixins

1.1 创建mixins.vue

<script>
	export default {
		name: "mixin",
		data() {
			return {
				// 设置默认分享参数
				share: {
					title: 'ALAPI',
					path: '/pages/index/index',
					imageUrl: '',
					desc: '',
					content: ''
				}
			};
		},
		// 分享触发的回调
		onShareAppMessage(options) {
			return {
				title: this.share.title,
				path: this.share.path,
				imageUrl: this.share.imageUrl,
				desc: this.share.desc,
				content: this.share.content,
				success(res) {
					uni.showToast({
						title: '分享成功'
					})
				},
				fail(res) {
					uni.showToast({
						title: '分享失败',
						icon: 'none'
					})
				}
			}
		},
	}
</script>

1.2 全局混入

main.js

import mixin from './mixin.vue'
import Vue from 'vue'
Vue.mixin(mixin)

如此,所有页面内就都可以使用分享功能。

1.3 页面分享数据

某页面单独设置分享的数据,只需在当前页面的data里配置一个share对象即可
***.vue

	share: {
		title: 'ALAPI',
		path: '/pages/about/about',
		imageUrl: '',
		desc: '',
		content: ''
	}

2.使用的方式

分享的可以分为右上角转发菜单页面内转发按钮两个途径。但是在触发页面的分享按钮时,却执行了两次分享函数的回调。

页面内转发:

<button open-type='share'>转发<button>

经过实验,发现执行两次回调是因为点击页面按钮时也会触发右上角转发菜单的回调。

那么该如何区分是哪种方式出发的回调呢?

在上述代码的onShareAppMessage的方法中,可以发现我写了一个参数,但是并没有进行使用。在该参数中就可以结构出这么一个参数from

转发事件来源。
button:页面内转发按钮;
menu:右上角转发菜单

如此即可区分分享事件的来源,进而进行一定的限制逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值