Swell

Hooks personnalisés

Liste et usage des hooks utilitaires personnalisés dans Swell.

Hooks utilitaires personnalisés

Dans Swell, plusieurs hooks React personnalisés sont proposés pour simplifier la gestion de l’état, des préférences utilisateur ou de la logique métier côté front. Ces hooks encapsulent des comportements récurrents et facilitent la réutilisation du code dans vos composants.

Liste des hooks principaux

HookDescriptionContext requis ?
useInitialsGénère les initiales à partir d’un nom/prénom, pratique pour les avatars utilisateurs.Non
useAppearanceGère le thème (clair/sombre/système) et la persistance du choix utilisateur.Non
useCartPermet d’accéder au panier, d’ajouter/retirer des articles, et de suivre l’état du panier.Oui (CartContext)
useWishlistPermet de gérer la wishlist utilisateur (ajout, suppression, récupération).Oui (WishlistContext)

Certains hooks nécessitent d’être utilisés à l’intérieur de leur provider de context associé (ex : CartProvider, WishlistProvider, etc.).

Exemples d’utilisation

Récupérer les initiales d’un utilisateur

import { useInitials } from "@/hooks/use-initials";
import type { SharedData } from "@/types";
import { usePage } from "@inertiajs/react";

const { auth } = usePage<SharedData>().props;
const initials = useInitials(auth.user.name); // "JD"

Gérer le thème d’apparence

import { useAppearance } from "@/hooks/use-appearance";

const { theme, setTheme } = useAppearance();

// Pour passer en mode sombre :
setTheme("dark");

Utiliser le panier (avec context obligatoire)

import { useCartContext } from '@/contexts/cart-context';
// Attention : ce hook doit être utilisé dans <CartProvider>

const { addToCart } = useCartContext();
const PRODUCT = {...};
addToCart({ product: PRODUCT, quantity: 2 });

Swell est entièrement encapsulée dans le CartProvider. Ainsi, tous les composants enfants peuvent utiliser les hooks liés au panier sans configuration supplémentaire.

Pourquoi utiliser ces hooks ?

  • Centralisation de la logique : La logique métier ou d’UI est factorisée et testable.
  • Réutilisabilité : Les hooks sont utilisables dans n’importe quel composant (sous réserve d’être dans le bon provider).
  • Lisibilité : Le code des composants reste simple et lisible.

Pour plus d’exemples ou pour créer vos propres hooks, inspirez-vous de la structure des hooks existants dans le dossier resources/js/hooks/.