uniapp开发小程序配置全局分享

通过创建一个mixins文件,将分享到朋友和朋友圈的逻辑集中管理,可以在所有页面中方便地实现一键分享。只需在main.js全局引入mixin,并在需要的页面设置特定的分享内容即可。

最近开发小程序的时候,发现实现分享转发的话,要每个页面都写一个onShareAppMessage,在一个博主看到了这篇文章,使用之后完美解决

实现代码如下:

1、创建一个mixins,我的文件路径为:utils/share.js

export default {
    data(){
        return {
            share:{
                title:'首页',
                path:'/pages/index/index',
                imageUrl:'',
                desc:'',
                content:'',
            }
        }
    },
    //分享到朋友或群
    onShareAppMessage(res) {
        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'
                })
            }
        }
    },
    //分享到朋友圈
    onShareTimeline(res) {
        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'
                })
            }
        }
    },
}

2、全局使用,在main.js里面添加全局的mixin

import share from "@/utils/share.js"
Vue.mixin(share)

3、如果单个页面需要设置不同的分享只需要更改data数据就行了

export default {
    data() {
		return {
            share:{//分享参数
                title:'分享标题',
                path:'分享地址',
                imageUrl:'分享预览图片',
                desc:'分享详情',
                content:'',
             }
	    }
	},
}

提供的参考引用中未提及uniapp开发微信小程序全局分享功能的封装方法。不过,一般来说,在uniapp开发微信小程序中封装全局分享功能可以按照以下思路进行: ### 全局配置分享 在 `App.vue` 文件里的 `onShow` 方法内设置全局分享配置。示例代码如下: ```javascript export default { onShow() { // 全局分享配置 uni.showShareMenu({ withShareTicket: true, menus: ['shareAppMessage', 'shareTimeline'] }); }, methods: { // 全局分享方法 onShareAppMessage() { return { title: '这是分享的标题', path: '/pages/index/index', imageUrl: '/static/share.png' }; }, onShareTimeline() { return { title: '这是分享到朋友圈的标题', query: { key: 'value' }, imageUrl: '/static/share.png' }; } } } ``` ### 页面级覆盖分享配置 如果某个页面需要不同的分享配置,可在该页面的 `script` 中重写 `onShareAppMessage` 和 `onShareTimeline` 方法。示例代码如下: ```javascript export default { methods: { onShareAppMessage() { return { title: '该页面的分享标题', path: '/pages/detail/detail?id=123', imageUrl: '/static/page-share.png' }; }, onShareTimeline() { return { title: '该页面分享到朋友圈的标题', query: { id: 123 }, imageUrl: '/static/page-share.png' }; } } } ``` ### 封装成插件 为了让代码更具复用性,可将全局分享功能封装成一个插件。示例代码如下: ```javascript // sharePlugin.js const sharePlugin = { install(Vue) { // 全局分享配置 Vue.mixin({ onShow() { uni.showShareMenu({ withShareTicket: true, menus: ['shareAppMessage', 'shareTimeline'] }); }, methods: { onShareAppMessage() { return { title: '这是分享的标题', path: '/pages/index/index', imageUrl: '/static/share.png' }; }, onShareTimeline() { return { title: '这是分享到朋友圈的标题', query: { key: 'value' }, imageUrl: '/static/share.png' }; } } }); } }; export default sharePlugin; ``` 在 `main.js` 中引入并使用该插件: ```javascript import Vue from 'vue'; import App from './App'; import sharePlugin from './sharePlugin'; Vue.use(sharePlugin); new Vue({ ...App }).$mount(); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值