ShareSheet 分享面板

引入

通过以下方式来全局注册组件,更多注册方式请参考。

基础用法

分享面板通过 属性来定义分享选项,数组的每一项是一个对象,对象格式见文档下方表格。

  1. <van-cell title="显示分享面板" @click="showShare = true" />
  2. <van-share-sheet
  3. v-model:show="showShare"
  4. title="立即分享给好友"
  5. :options="options"
  6. @select="onSelect"
  7. />
  1. import { ref } from 'vue';
  2. import { Toast } from 'vant';
  3. export default {
  4. setup() {
  5. const showShare = ref(false);
  6. const options = [
  7. { name: '微博', icon: 'weibo' },
  8. { name: '复制链接', icon: 'link' },
  9. { name: '分享海报', icon: 'poster' },
  10. { name: '二维码', icon: 'qrcode' },
  11. ];
  12. const onSelect = (option) => {
  13. Toast(option.name);
  14. showShare.value = false;
  15. };
  16. return {
  17. options,
  18. onSelect,
  19. showShare,
  20. };
  21. },
  22. };

展示多行选项

当分享选项的数量较多时,可以将 options 定义为数组嵌套的格式,每个子数组会作为一行选项展示。

  1. import { ref } from 'vue';
  2. export default {
  3. const showShare = ref(false);
  4. const options = [
  5. [
  6. { name: '微信', icon: 'wechat' },
  7. { name: '朋友圈', icon: 'wechat-moments' },
  8. { name: '微博', icon: 'weibo' },
  9. { name: 'QQ', icon: 'qq' },
  10. ],
  11. [
  12. { name: '复制链接', icon: 'link' },
  13. { name: '分享海报', icon: 'poster' },
  14. { name: '二维码', icon: 'qrcode' },
  15. ],
  16. ];
  17. return {
  18. options,
  19. showShare,
  20. };
  21. },
  22. };
  1. <van-share-sheet v-model:show="showShare" :options="options" />

展示描述信息

通过 description 属性可以设置标题下方的描述文字, 在 options 内设置 description 属性可以添加分享选项描述。

  1. <van-share-sheet
  2. v-model:show="showShare"
  3. :options="options"
  4. title="立即分享给好友"
  5. description="描述信息"
  6. />
  1. import { ref } from 'vue';
  2. export default {
  3. setup() {
  4. const options = [
  5. { name: '微信', icon: 'wechat' },
  6. { name: '微博', icon: 'weibo' },
  7. { name: '复制链接', icon: 'link', description: '描述信息' },
  8. { name: '分享海报', icon: 'poster' },
  9. { name: '二维码', icon: 'qrcode' },
  10. ];
  11. return {
  12. options,
  13. showShare,
  14. };
  15. },

Props

Option 数据结构

options 属性为一个对象数组,数组中的每个对象配置一列,对象可以包含以下值:

Slots

类型定义

组件导出以下类型定义:

样式变量

在不同的 App 或浏览器中,存在各式各样的分享接口或分享方式,因此 ShareSheet 组件不提供具体的分享逻辑,需要开发者根据业务场景自行实现。

微信内分享

由于微信未提供分享相关的 API,需要引导用户点击右上角进行分享。

App 内分享

可以通过 JSBridge 调用原生应用的 SDK 进行分享。

分享海报或二维码