Skip to content

ShareSheet 分享面板


按需引入

::: CopyCode

ts
import { createApp } from 'vue'
import App from './App.vue'
import { MeShareSheet } from 'mine-h5-ui'
import 'mine-h5-ui/styles/MeShareSheet.css'

createApp(App).use(MeShareSheet).mount('#app')

:::

提示

  • 如果你觉得重新编写 HTML 结构麻烦,可以直接复制下面的代码。

代码演示

基础用法

  • 通过 v-model:visible 来设置分享面板的显示和隐藏。
  • 通过属性 tips 来设置分享面板的提示文本。

::: CopyCode

vue
<template>
  <!-- 分享面板 -->
  <ul class="share-sheet">
    <li v-for="item in listData" :key="item.id">
      <div class="label" v-text="item.label"></div>
      <ul class="list-all">
        <li v-for="it in item.list" :key="it.id" @click="onClick(it)">
          <span v-text="it.value"></span>
          <me-icon name="icon-right1" size="20px" color="#ccc" />
          <me-share-sheet v-model:visible="it.visible" :list="it.list" tips="立即分享给好友" @change="onChange" @cancel="onCancel"></me-share-sheet>
        </li>
      </ul>
    </li>
  </ul>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import { MeToast } from 'mine-h5-ui'

/**
 * 分享面板数据
 */
const listData = ref([
  {
    id: 1,
    label: '基础用法',
    list: [
      {
        id: 1,
        value: '立即分享',
        visible: false,
        list: [
          {
            icon: 'icon-wechat',
            value: '微信',
            color: '#67c23a'
          },
          {
            icon: 'icon-pengyouquan',
            value: '朋友圈',
            color: '#409eff'
          },
          {
            icon: 'icon-zhifubao',
            value: '支付宝',
            color: '#06b4fd'
          },
          {
            icon: 'icon-qq',
            value: 'QQ',
            color: '#ec502b'
          },
          {
            icon: 'icon-weibo',
            value: '微博',
            color: '#f40f3b'
          },
          {
            icon: 'icon-qr-code',
            value: '二维码',
            color: '#1cc09e'
          }
        ]
      }
    ]
  }
])

/**
 * 点击列表项
 */
const onClick = item => {
  item.visible = false
}

/**
 * 点击分享面板列表
 */
const onChange = item => {
  MeToast(JSON.stringify(item))
}

/**
 * 点击分享面板取消按钮
 */
const onCancel = () => {
  MeToast('你点击了取消按钮')
}
</script>
<style scoped lang="less">
.share-sheet {
  > li {
    margin-bottom: 10px;
    .label {
      width: 100%;
      margin-bottom: 10px;
      color: #949494;
      font-size: 14px-min;
    }
    .list-all {
      > li {
        display: flex;
        justify-content: space-between;
        align-items: center;
        width: 100%;
        height: 40px;
        border-bottom: 1px solid darken(#f6f6f6, 5%);
        cursor: pointer;
        > span {
          color: #494949;
          font-size: 14px;
        }
      }
    }
  }
}
</style>

:::

API

参数

参数说明类型可选值默认值版本
visible(v-model:visible)双向绑定组件显示状态boolean----v2.0.0
list对象数组数据Array----v2.0.0
tips提示文本string--立即分享给好友v2.0.0

方法

方法名说明回调参数版本
change点击分享列表时触发的事件item: Objectv2.3.5
cancel点击取消按钮时触发的事件event: MouseEventv2.3.5

基于 MIT 许可发布