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>

相关推荐
00后程序员张8 小时前
iOS 上架费用全解析 开发者账号、App 审核、工具使用与开心上架(Appuploader)免 Mac 成本优化指南
android·macos·ios·小程序·uni-app·cocoa·iphone
前端与小赵15 小时前
uni-app开发安卓app时控制屏幕常亮不息屏
android·gitee·uni-app
2501_9160088917 小时前
HTTPS 请求抓包,从原理到落地排查的工程化指南(Charles / tcpdump / Wireshark / Sniffmaster)
ios·小程序·https·uni-app·wireshark·iphone·tcpdump
xiaohe060118 小时前
🥳 Uni ECharts 2.1 发布:正式支持鸿蒙,零成本迁移、全平台兼容、跨端开发零负担!
vue.js·uni-app·echarts
2501_915909061 天前
WebView 调试工具全解析,解决“看不见的移动端问题”
android·ios·小程序·https·uni-app·iphone·webview
2501_915106321 天前
App 怎么上架 iOS?从准备资料到开心上架(Appuploader)免 Mac 上传的完整实战流程指南
android·macos·ios·小程序·uni-app·iphone·webview
行走的陀螺仪1 天前
uni-app + Vue3 实现折叠文本(超出省略 + 展开收起)
前端·javascript·css·uni-app·vue3
小禾青青1 天前
uniapp安卓打包遇到报错:Uncaught SyntaxError: Invalid regular expression: /[\p{L}\p{N}]/
android·uni-app
环信即时通讯云1 天前
实现小程序 uniApp 输入框展示自定义表情包
小程序·uni-app
2501_915921432 天前
iOS 抓不到包怎么办?工程化排查与替代抓包方案(抓包/HTTPS/Charles代理/tcpdump)
android·ios·小程序·https·uni-app·iphone·tcpdump