厭倦了由多個第三方共享腳本壓制的腫的網站? Web Share API提供了簡化的性能替代方案,利用設備的本機共享功能。該教程展示了建立現代,基於反應的共享系統。
項目設置
首先使用Vite和Typescript創建一個新的React項目:
<code class="language-bash">npm create vite@latest my-share-app -- --template react-ts cd my-share-app</code>
<code class="language-bash">npm install sonner</code>
>
<code class="language-bash">npm install -D tailwindcss@3 postcss autoprefixer npx tailwindcss init -p</code>
組件中添加sonner
烤麵包提供商:App
<code class="language-typescript">// src/App.tsx import { Toaster } from 'sonner'; function App() { return ( <> <Toaster position="bottom-right" /> {/* Your app content */} </> ); }</code>
> > Web Share API提供了平臺本地共享體驗,並與設備的內置共享機制無縫集成。 這在移動和桌面上提供了一致的用戶體驗。
創建共享鉤
> >讓我們創建一個自定義掛鉤(
)來管理共享邏輯:
src/hooks/useShare.ts
<code class="language-typescript">import { toast } from "sonner"; const useShare = () => { const copy = async (text: string) => { try { await navigator.clipboard.writeText(text); toast.success(`Copied ${text} to clipboard!`); } catch (error) { console.error("Clipboard copy error:", error); toast.error("Clipboard copy failed."); } }; const share = async (url: string, title: string, description: string) => { if (navigator.share) { try { await navigator.share({ title, text: description, url }); console.log("Share successful!"); } catch (error) { console.error("Sharing error:", error); toast.error("Sharing failed."); copy(url); // Fallback to copy } } else { console.error("Web Share API not supported."); toast.error("Web Share API not supported. Copying URL instead."); copy(url); // Fallback to copy } }; return { copy, share }; }; export default useShare;</code>
>提供:
useShare
copy
share
使用組件中的鉤子copy
component(
):及其在中的用法:
>
ShareButton
src/components/ShareButton.tsx
>瀏覽器支持和注意事項
<code class="language-typescript">// src/components/ShareButton.tsx import { FC } from 'react'; import useShare from '../hooks/useShare'; interface ShareButtonProps { url: string; title: string; description: string; } const ShareButton: FC<ShareButtonProps> = ({ url, title, description }) => { const { share } = useShare(); const handleShare = () => { share(url, title, description); }; return ( <button onClick={handleShare}>Share</button> ); }; export default ShareButton;</code>
App.tsx
<code class="language-typescript">// src/App.tsx import ShareButton from './components/ShareButton'; function App() { return ( <div className="p-4"> <h1>My Awesome Content</h1> <ShareButton url={window.location.href} title="Check out this content!" description="Interesting article about the Web Share API..." /> </div> ); }</code>
用戶交互(例如,按鈕單擊)。 > 並非所有數據類型都得到了普遍支持。
>
>將成功或失敗告知用戶。 >
保持簡單。> Web共享API提供了傳統共享方法的優越選擇。 通過將其與React和周到的錯誤處理相結合,您可以為用戶創建無縫的本地共享體驗。 在您的下一個項目中嘗試一下!
以上是在與Web共享API的React中建立靈活的共享系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!