frontend en tant que dev back aisément UX implémente ce besoin via une API PHP optionnelle exposée au frontend via Twig Traduction niaise: Je veux faire du React sans JSX via PHP
un coffre à jouet, débrouillez-vous avec ce que l’on vous offre Au fond, le tout n’est qu’une décoration “++” de Stimulus / Turbo Une classe, un composant, simple, basique … Enfin, oui et non.
backend en Symfony / JS maison / UX JS complexe et découpé en “modules” (aka “composants React” sans React) Objectif : Intégrer une recherche via moteur de recherche avec failover sur la DB (Postgres)
“sous-events”, what the hell?! Si la recherche “filtre”, les filtres doivent aussi réduire le scope, idem pour la limite, le tout combiné si possible. Comment fait-on communiquer tout ça sans imploser en plein vol ?
aux fraises, zéro stabilité, découpage trop fin Gestion des ids catastrophique (f*** conventions), morphing en carafe data-skip-morph to the rescue, enfin … Si X composant s’écoutent, privilégier (si possible) les composants nested Si le composant Y dépend de X et que Z update Y, quid de X ?
filtres aussi) Emission d’un event “search” qui est écouté par un seul composant Si un composant enfant effectue une MAJ via un event, on recalcule tout Emission vers composant spécifique Si le composant ne déclenche pas un nouveau rendu, on est mal X petits composants qui hérite des données du composant maître Reste la solution du debouncing mais perte de précision
par X composants Aucun moyen natif de prioriser les composants déclenchés Si un composant n’a pas terminé son rendu, quid de l’état ? Une solution serait d’avoir une option priority Laisser faire et vérifier l’état dans le controller Stimulus via on() Si X composants à rendre à nouveau, coucou /_batch Si sous-émission, attention aux rendu cumulés
la vue Serialization peu intuitive (serializer, hydrator, prière ?) Méthode ou LiveProp, il faut choisir LiveProp sur types scalaires / DTO Par convention, privilégier les hydrators pour les objets
Attributs ou LiveProp, là réside la question Rendu en cascade si attributs partagés Utiliser mount ou postMount pour les données complexes Eviter de modifier les données via LiveListener Se méfier de la satanerie diabolique updateFromParent
des attributs / metadata, etc Limiter les appels cumulés sur un seul template Defer / Lazy, tout dépend du contexte Si composants caché, lazy est ton ami Désactiver le morphing si composants enfants / complexes En pratique, UX est lent, adaptez-vous
mais la mise en pratique reste ardue Si votre application vit très bien sans, passez votre chemin Doliprane (ou Efferalgan), 3 fois par jour, la documentation et du café / thé Si vous êtes sur une refonte, réfléchissez bien et faites un POC, ça coûte rien (enfin …)