Maison > interface Web > js tutoriel > le corps du texte

Réagissez aux nouvelles fonctionnalités - le crochet 'utiliser'

Linda Hamilton
Libérer: 2024-10-09 14:33:29
original
764 Les gens l'ont consulté

React new features - the

React 19 (version RC – à compter de septembre 2024) est la dernière version de la populaire bibliothèque de développement Web.
La V19 est une étape importante, apportant de nombreuses nouvelles fonctionnalités et hooks. Cet article discutera de l'un de ces hooks, le use hook.

Le crochet d'utilisation

Ce hook permet aux développeurs de suspendre le rendu d'un composant d'interface utilisateur jusqu'à ce qu'une tâche asynchrone, telle que la récupération de données ou le chargement de ressources, soit terminée en suspendant la promesse reçue, sans avoir besoin d'une gestion d'état complexe.

Exemple de récupération de données

Nous avons un composant simple qui utilise l'approche classique, le hook useEffect, et récupère les données d'une API fictive (j'utilise MSW).
Nous gérons un état local pour stocker les données, ainsi que les états de récupération isLoading et isError :

const [users, setUsers] = useState<any>(null);
const [isError, setIsError] = useState<boolean>(false);
const [isLoading, setIsLoading] = useState<boolean>(true);
Copier après la connexion

Lorsque la page se charge pour la première fois, nous exécutons ce hook useEffect pour récupérer les données, les stocker et mettre à jour les différents états :

const fetchData = async () => {
  const response = await fetch('/api/users');
  return response.json();
};


useEffect(() => {
  fetchData()
    .then(setUsers)
    .catch(() => setIsError(true))
    .finally(() => setIsLoading(false));
}, []);
Copier après la connexion

Nous affichons une interface utilisateur pendant le traitement de la demande ou si nous rencontrons une erreur :

if (isLoading) {
  return <h2>Loading...</h2>;
}
if (isError) {
  return <h2>Error</h2>;
}
Copier après la connexion

et enfin ! Nous rendons la liste des utilisateurs :

return ( 
  <>
    {users.map((user) => {
      return (
        <div>
          {user.lastName}, {user.firstName}
        </div>
      );
    })}
  </>
);
Copier après la connexion

Beaucoup de code passe-partout !

Maintenant, refactorisons !

Supprimons les hooks useState et useEffect. Nous conserverons la méthode fetchData telle quelle.
Nous allons maintenant récupérer les données à l'aide du nouveau hook use, qui prend une promesse et renvoie soit des données JSON, soit une erreur :

const users = use(fetchData());
Copier après la connexion

La façon dont ce crochet fonctionne est similaire à quelque chose comme ceci :

const users = await fetchData();
Copier après la connexion

Gestion de isLoading et isError

Pour gérer ces changements d'état, nous allons accéder à notre composant App. Nous utiliserons le composant React Suspense, conçu pour répondre aux événements asynchrones. Il affiche une interface utilisateur de secours jusqu'à ce que ses enfants aient fini de se charger.

Pour la gestion des erreurs lorsque vous travaillez avec Suspense, il est courant d'utiliser un ErrorBoundary. Nous ajouterons un composant ErrorBoundary qui implémente la méthode getDerivedStateFromError() de React.

<ErrorBoundary fallback={<h2>Error</h2>}>
  <Suspense fallback={<h2>Loading...</h2>}>
    <UserList />
  </Suspense>
</ErrorBoundary>
Copier après la connexion

Quelques extras

Les règles habituelles pour les crochets ne s'appliquent pas ici — vous pouvez utiliser ce crochet partout où vous le souhaitez !

Contrairement aux hooks classiques, le hook use peut être utilisé conditionnellement avec une instruction if, vous permettant de décider de le déclencher ou non. Par exemple, si vous souhaitez envelopper une nouvelle requête API avec un indicateur de fonctionnalité et l'activer pour le test, transmettez simplement l'indicateur de fonctionnalité au composant UserList et enveloppez le hook d'utilisation. C'est aussi simple que ça !

Maintenant, modifiez le composant App :

<ErrorBoundary fallback={<h2>Error</h2>}>
  <Suspense fallback={<h2>Loading...</h2>}>
    <UserList testNewApi={true} />
  </Suspense>
</ErrorBoundary>
Copier après la connexion

Modifiez le composant UserList :

let users = [];
if(testNewApi){
  user = use(fetchData());
}
Copier après la connexion

Vous pouvez également utiliser ce hook pour obtenir un objet Context, plutôt que d'utiliser la méthode habituelle :

const data = useContext(myContext);
Copier après la connexion

Vous pouvez utiliser le hook use ici, par exemple, si vous souhaitez récupérer le contexte en fonction d'une instruction conditionnelle.

Conclusion

Dans cet article, j'ai décrit la syntaxe du hook d'utilisation et fourni des exemples d'utilisation. Cela devrait vous aider à comprendre ces crochets et à les mettre en œuvre efficacement. J'espère que vous trouverez ces informations utiles pour vos futurs projets.

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!