Applications pratiques : recherche, défilement, redimensionnement
Appliquez l’anti-rebond aux champs de recherche et la limitation de fréquence aux écouteurs de défilement et de redimensionnement dans des exemples concrets de composants.
Applications pratiques : recherche, défilement, redimensionnement est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.
Recherche en direct avec useDebounce
Dans un composant de recherche en direct, gérez deux variables d’état distinctes : inputValue pour la saisie brute (elle se met à jour à chaque frappe et maintient le champ de saisie réactif) et debouncedQuery, obtenu avec useDebounce(inputValue, 300) (il se met à jour 300 ms après l’arrêt de la saisie et déclenche l’appel à l’API). Cette séparation fournit un retour visuel instantané sans multiplier les requêtes.
État de chargement pendant la recherche
Affichez un indicateur de chargement dès que l’utilisateur commence à saisir du texte, et pas uniquement lorsque l’appel à l’API commence. Définissez isLoading: true chaque fois que inputValue !== debouncedQuery : ces valeurs ne sont pas synchronisées pendant l’attente de la temporisation. Une fois la requête stabilisée et la récupération terminée, redéfinissez-le sur false. Les utilisateurs voient ainsi un indicateur de chargement réactif pendant toute l’opération.
Gestionnaire de défilement avec useThrottle
Un effet de parallaxe ou une barre de progression de lecture se met à jour en fonction de la position de défilement. Limitez la fréquence du gestionnaire de défilement à 60 images par seconde au maximum, avec un délai de 16 ms : const throttledScrollY = useThrottle(scrollY, 16). L’interface se met à jour fluidement sans le coût d’un recalcul de la position à chaque pixel de défilement.
Redimensionnement de la fenêtre avec useDebounce
L’écoute du redimensionnement de la fenêtre pour recalculer la mise en page doit être temporisée, et non limitée en fréquence. Le calcul de la mise en page doit uniquement s’exécuter une fois que l’utilisateur a terminé de redimensionner la fenêtre. Utilisez une temporisation de 200 ms sur les dimensions de la fenêtre. Pendant le redimensionnement par glissement, l’interface peut afficher un état simplifié ; la mise en page recalculée apparaît lorsque le redimensionnement s’arrête.
Combiner la temporisation avec AbortController
Lorsque debouncedQuery change, créez un nouvel AbortController et transmettez son signal à fetch(url, { signal }). Renvoyez une fonction de nettoyage qui appelle controller.abort(). Cela annule toute requête en cours provenant d’une requête précédente lorsqu’une nouvelle requête temporisée arrive, empêchant les conditions de concurrence dans lesquelles une réponse antérieure plus lente écraserait une réponse ultérieure plus rapide.
Condition de concurrence sans AbortController
Sans AbortController, si l’utilisateur saisit « re », attend, puis saisit « react », la seconde requête peut retourner un résultat avant la première (en raison de la mise en cache). Les résultats de recherche afficheraient brièvement les résultats pour React, puis seraient remplacés par les résultats obsolètes pour « re ». AbortController évite cela en annulant entièrement la requête précédente.
Modèle de liste déroulante de saisie semi-automatique
La liste déroulante combine la temporisation pour les appels à l’API et un état immédiat pour l’affichage de la saisie. inputValue contrôle ce qui apparaît dans le champ de texte. useDebounce(inputValue, 250) contrôle le moment où la récupération des suggestions est déclenchée. La liste de suggestions est affichée à partir de l’état des résultats récupérés, qui est distinct des deux états de saisie.
Validation asynchrone limitée en fréquence
La validation asynchrone d’un formulaire, par exemple pour vérifier si une adresse e-mail existe déjà, doit être temporisée afin d’éviter de solliciter le serveur à chaque frappe. Utilisez une temporisation de 400 ms sur la valeur du champ et déclenchez la requête de validation dans un useEffect qui dépend de la valeur temporisée. Affichez un indicateur de chargement dans le champ pendant l’attente de la validation.
Enregistrement automatique du formulaire avec temporisation
La temporisation est idéale pour enregistrer automatiquement le contenu d’un formulaire pendant que l’utilisateur saisit du texte. Appliquez une temporisation de 1000 ms à l’objet contenant les valeurs du formulaire. Lorsque la valeur temporisée change, déclenchez un enregistrement vers localStorage ou un point de terminaison d’API. L’utilisateur voit l’indication « Enregistrement… » pendant l’attente de la temporisation, puis « Enregistré » une fois la requête terminée.
Choisir le délai approprié
Les valeurs de délai relèvent de l’expérience utilisateur. Pour la recherche, 200 à 300 ms offrent un bon équilibre entre réactivité et réduction du nombre de requêtes. Pour le redimensionnement, 150 à 200 ms sont acceptables, car les utilisateurs s’attendent à ce que la mise en page se stabilise après le redimensionnement. Ajustez ces valeurs en fonction de la vitesse d’interaction prévue.
Combiner plusieurs techniques
Les applications réelles nécessitent souvent plusieurs optimisations simultanément. Un éditeur de documents peut temporiser l’enregistrement automatique (1 s), limiter la fréquence du calcul du nombre de mots (500 ms) et utiliser IntersectionObserver pour l’analyse. Ces techniques se combinent bien, car chacune fonctionne indépendamment avec son propre minuteur et sa propre portée.
Combiner la temporisation avec AbortController
Pourquoi devriez-vous utiliser AbortController avec une requête de recherche temporisée ?
Récapitulatif de la leçon : temporisation et limitation de fréquence pratiques
Utilisez useDebounce pour les champs de recherche, les gestionnaires de redimensionnement et l’enregistrement automatique des formulaires. Utilisez useThrottle pour le défilement et les mouvements de la souris. Combinez toujours les appels d’API temporisés avec AbortController pour éviter les conditions de concurrence. Affichez l’état de chargement chaque fois que inputValue !== debouncedQuery afin de maintenir une interface réactive et informative.
Apprends React avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 88
- Leçons
- 324
Questions Fréquemment Posées
La leçon « Applications pratiques : recherche, défilement, redimensionnement » est-elle gratuite ?
Oui — le texte complet de « Applications pratiques : recherche, défilement, redimensionnement » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Applications pratiques : recherche, défilement, redimensionnement » ?
Appliquez l’anti-rebond aux champs de recherche et la limitation de fréquence aux écouteurs de défilement et de redimensionnement dans des exemples concrets de composants. Tu pratiques React Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer React Academy ?
Aucune expérience préalable n'est requise. React Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Applications pratiques : recherche, défilement, redimensionnement » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon React Academy ?
Oui. Chaque leçon React Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Pourquoi le debounce et le throttle sont importants dans les interfaces
- Implémenter le hook personnalisé useDebounce
- Implémenter le hook personnalisé useThrottle
- Applications pratiques : recherche, défilement, redimensionnement