useShare
调用系统原生分享功能,分享文本、链接和文件。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.vue.ref | <T>(value: T) => Ref<T> | Vue ref 函数 |
deps.navigator | NavigatorShare | Navigator Share API |
环境要求
浏览器 API: Web Share API
平台支持:
- ✅ 移动端(iOS Safari、Android Chrome)- 完全支持
- ✅ Windows(Chrome、Edge)- 支持
- ✅ macOS(Safari)- 支持
- ⚠️ Linux - 部分浏览器支持
需要 HTTPS 环境(localhost 除外)。
函数签名
typescript
function useShare(
deps: UseShareDeps
): UseShareReturn
interface UseShareDeps {
vue: VueCompositionAPI
navigator: NavigatorShare
}
interface UseShareReturn {
isSupported: Ref<boolean>
isSharing: Ref<boolean>
error: Ref<string | null>
share: (data: ShareData) => Promise<boolean>
}
interface ShareData {
title?: string
text?: string
url?: string
files?: File[]
}参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
deps | UseShareDeps | 是 | 依赖注入对象 |
返回值
| 属性 | 类型 | 说明 |
|---|---|---|
isSupported | Ref<boolean> | 是否支持 Share API |
isSharing | Ref<boolean> | 是否正在分享 |
error | Ref<string | null> | 错误信息 |
share | (data: ShareData) => Promise<boolean> | 分享内容,返回是否成功 |
工作原理
- 检查浏览器是否支持 Web Share API
- 检查分享数据是否有效(使用
canShare) - 调用系统分享面板
- 用户选择分享目标应用
- 返回分享结果(用户取消不算错误)
分享目标:
- 移动端:微信、微博、邮件、短信、复制链接等
- 桌面端:邮件、OneNote、Twitter 等
注意:
- 用户取消分享不会设置
error,而是返回false - 分享文件功能为实验性,并非所有浏览器都支持
异常
无异常抛出