uniapp 分享例子做个记录

<template>

<view class="content">

<view class="invite-wrapper" v-if="inviteUrl">

<uni-qrcode class="invite-qrcode" ref="qrcode" cid="invite-qr-canvas" :text="inviteUrl" :margin="10" makeOnLoad

@makeComplete="qrcodeComplete" />

<view class="share-btn">

<button type="primary" @click="shareLink">分享链接</button>

<button type="primary" @click="shareImage">分享图片</button>

</view>

<view class="share-btn">

<button type="primary" @click="toInvitedUser">我邀请的用户</button>

</view>

<uni-popup id="popupShare" ref="popupShare" type="share">

<uni-popup-share title="分享到" :shareType="shareType" @select="select"></uni-popup-share>

</uni-popup>

</view>

</view>

</template>

<script>

import {

mapState

} from 'vuex'

export default {

data() {

return {

inviteUrl: '',

qrcodeImagePath: '',

qrcodePath: '',

shareType: ''

}

},

onLoad() {

uni.showLoading({

title: '加载中...'

})

uniCloud.callFunction({

name: 'user-center',

data: {

action: 'getInviteCode'

},

success: (res) => {

console.log(res);

if (res.result.code === 0) {

// 这里请修改为真实的邀请页面url

this.inviteUrl = 'https://login.tpl.dcloud.net.cn/#/pages/invite-reg/invite-reg?invite_code=' + res.result.myInviteCode

} else {

uni.showModal({

content: '获取用户邀请码失败:' + res.result.msg,

showCancel: false

})

}

},

fail: (err) => {

uni.showModal({

content: '获取用户邀请码失败,请稍后再试',

showCancel: false

})

},

complete() {

uni.hideLoading()

}

})

},

methods: {

copyInviteUrl() {

uni.setClipboardData({

data: this.inviteUrl

})

},

qrcodeComplete(path) {

this.qrcodeImagePath = path

},

shareLink() {

this.shareType = 'link'

this.$refs.popupShare.open()

},

shareImage() {

this.shareType = 'image'

this.$refs.popupShare.open()

},

select({

item

}) {

const shareTitle = '登录模板',

shareSummary = 'DCloud邀请您试用登录模板'

let params = {}

switch (`{this.shareType}_{item.name}`) {

case 'link_weixin':

params = {

type: 1,

summary: this.inviteUrl,

scene: 'WXSceneSession'

}

break;

case 'link_qq':

params = {

type: 1,

title: shareTitle,

summary: shareSummary,

href: this.inviteUrl

}

break;

case 'link_more':

uni.setClipboardData({

data: this.inviteUrl

})

return

case 'image_weixin':

params = {

type: 2,

imageUrl: this.qrcodeImagePath,

scene: 'WXSceneSession'

}

break;

case 'image_qq':

params = {

type: 2,

imageUrl: this.qrcodeImagePath

}

break;

case 'image_more':

uni.shareWithSystem({

type: 'image',

imageUrl: this.qrcodeImagePath

})

return

default:

break;

}

console.log(params);

uni.share({

provider: item.name,

...params,

success() {

uni.showModal({

content: '分享成功',

showCancel: false

})

},

fail(err) {

uni.showModal({

content: '分享失败:' + err.errMsg,

showCancel: false

})

}

})

},

toInvitedUser() {

uni.navigateTo({

url: '/pages/invited-user/invited-user'

})

}

}

}

</script>

<style>

.invite-wrapper {

display: flex;

padding: 20px;

flex-direction: column;

align-items: center;

}

.invite-qrcode {

border-radius: 10px;

box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 10px 1px;

overflow: hidden;

}

.share-btn {

display: flex;

flex-direction: row;

padding: 20px 0px 10px 0px;

}

.share-btn button {

flex: 1;

margin: 0px 10px;

border-radius: 40px;

}

</style>

相关推荐
anyup1 天前
uni-app 全能日历组件,支持农历、酒店预订、打卡签到、价格日历多种场景
前端·前端框架·uni-app
优雅的大白鹅2 天前
创建uniapp小程序
小程序·uni-app
笨笨狗吞噬者3 天前
uni-app 运行时揭秘:styleIsolation 的转化
前端·微信小程序·uni-app
神の愛3 天前
JeecgBoot-Uniapp
uni-app
怀君3 天前
Uniapp——微信小程序Canvas层级过高问题解决
微信小程序·小程序·uni-app
阿凤214 天前
uniapp运行到app端怎么打开文件
android·前端·javascript·uni-app
00后程序员张4 天前
完整教程:如何将iOS应用程序提交到App Store审核和上架
android·macos·ios·小程序·uni-app·cocoa·iphone
00后程序员张4 天前
iOS应用性能优化全解析:卡顿、耗电、启动与瘦身
android·ios·性能优化·小程序·uni-app·iphone·webview
Front思4 天前
解决 uniapp Dart Sass 2.0.0 弃用警告
前端·uni-app·sass
星空下的曙光4 天前
uniapp编译到微信小程序接口获取不到数据uni.request
微信小程序·小程序·uni-app