Next Generation — Agence Digitale
    Aller au contenu principal
    Blog
    3 juin 20263 min

    Logique métier découplée de l'UI : la règle qui sauve les pivots produit

    Logique métier dans le composant = impossible à tester, réutiliser, migrer. Découpler en 3 couches : UI / hooks / services TS pur. Tests rapides.

    MB

    Meymoun Boualaoui

    Président · DG · CTO — Fondateur

    Logique métier découplée de l'UI : la règle qui sauve les pivots produit

    Une logique métier dans le composant React = impossible à tester, à réutiliser, à migrer. Découpler = pouvoir changer l'UI sans toucher au métier (et vice-versa).

    Les 3 couches

    UI (React composants)        ← présentation pure
      └── Hooks (useFoo)         ← orchestration React
           └── Services (TS pur) ← logique métier testable
                └── API/DB       ← persistance

    Exemple : calcul de pricing

    ts
    // ❌ logique dans le composant
    function PricingCard() {
      const price = base * (1 + tva) * (1 - discount);
      return <div>{price.toFixed(2)} €</div>;
    }
    
    // ✅ service TS pur, testable, réutilisable
    // src/features/pricing/pricing.service.ts
    export function computePrice(input: PricingInput): number { ... }
    
    // hook React
    function usePricing(input) {
      return useMemo(() => computePrice(input), [input]);
    }
    
    // composant
    function PricingCard({ input }) {
      const price = usePricing(input);
      return <div>{formatEUR(price)}</div>;
    }

    Bénéfices

    • Tests unitaires sur computePrice (0 React, vitest rapide)
    • Réutilisable côté edge function (même formule serveur/client)
    • Pivot UI sans risque (le métier reste figé)
    • Documentation in-file naturelle (1 fonction = 1 contrat)

    Anti-pattern : services qui dépendent de React

    computePrice(useUser()) = service couplé. Refuse useState/useEffect dans *.service.ts. La couche TS pur ne doit rien savoir de React.

    Validation des entrées avec Zod

    Chaque service expose un schéma Zod en entrée. Sortie typée. Les erreurs de validation deviennent des ApiError(422, ...) côté edge. UI affiche le détail par champ.

    Partager

    Questions fréquentes

    MB

    Écrit par

    Meymoun Boualaoui

    Président · DG · CTO — Fondateur

    Fondateur de Next Generation. Dev full-stack, SEO technique et architecture web — il maîtrise toute la chaîne de production, de l'infra au contenu qui ranke. Direct, analytique, perfectionniste.

    Voir le profil & tous les articles
    Service lié

    Besoin d'un accompagnement en seo & référencement ?

    Vos concurrents vous devancent sur Google. On renverse la situation. Audit, contenu, netlinking, résultats durables.

    Besoin d'aide pour votre stratégie digitale ?

    Nos experts sont là pour transformer vos ambitions en résultats concrets.

    Audit gratuitSans engagementRéponse sous 24h