Fatigué des sites Web gonflés alourdis par plusieurs scripts de partage tiers? L'API Web Share propose une alternative rationalisée et performante, tirant parti des capacités de partage natives de votre appareil. Ce tutoriel démontre la construction d'un système de partage moderne basé sur la réaction.
Configuration du projet
Commencez par créer un nouveau projet React à l'aide de Vite et TypeScript:
<code class="language-bash">npm create vite@latest my-share-app -- --template react-ts cd my-share-app</code>
Installez les dépendances:
<code class="language-bash">npm install sonner</code>
pour le style (facultatif, mais recommandé):
<code class="language-bash">npm install -D tailwindcss@3 postcss autoprefixer npx tailwindcss init -p</code>
Ajoutez le fournisseur de pain grillé sonner
à votre composant principal App
:
<code class="language-typescript">// src/App.tsx import { Toaster } from 'sonner'; function App() { return ( <> <Toaster position="bottom-right" /> {/* Your app content */} </> ); }</code>
Comprendre l'API de partage Web
L'API de partage Web offre une expérience de partage native de plate-forme, intégrant de manière transparente aux mécanismes de partage intégrés de votre appareil. Cela offre une expérience utilisateur cohérente sur le mobile et le bureau.
Création du Share Hook
Créons un crochet personnalisé (src/hooks/useShare.ts
) pour gérer la logique de partage:
<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>
Breakdown d'implémentation
useShare
fournit:
copy
: Une secours du presse-papiers à l'aide de l'API du presse-papiers. share
: priorise l'API de partage Web, retombant à copy
s'il n'est pas disponible ou infructueux. Cette approche garantit une expérience de partage robuste entre divers navigateurs et appareils.
en utilisant le crochet dans les composants
Voici un composant 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>
et son utilisation dans 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>
Prise en charge et considérations du navigateur
L'API de partage Web bénéficie d'un large support sur les navigateurs mobiles mobiles et de bureau. N'oubliez pas:
meilleures pratiques
Ressources
Conclusion
L'API Web Share offre une alternative supérieure aux méthodes de partage traditionnelles. En le combinant avec React et une gestion des erreurs réfléchis, vous pouvez créer une expérience de partage native sans couture pour vos utilisateurs. Essayez-le dans votre prochain projet!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!