L'état de React fait référence aux données ou aux propriétés qui contrôlent le comportement et le rendu des composants. Ceux-ci sont mutables et peuvent changer avec le temps, déclenchant des redevateurs pour mettre à jour l'interface utilisateur. L'état est crucial pour créer des applications Web interactives et dynamiques.
Gérer l'état dans les composants de la classe:
Dans les composants de la classe, l'état est géré à l'aide de l'objet this.state
. Vous initialisez l'état dans le constructeur et pouvez le mettre à jour en utilisant this.setState()
. Voici un exemple:
<code class="javascript">class ExampleComponent extends React.Component { constructor(props) { super(props); this.state = { count: 0 }; } incrementCount = () => { this.setState({ count: this.state.count 1 }); }; render() { return ( <div> <p>Count: {this.state.count}</p> <button onclick="{this.incrementCount}">Increment</button> </div> ); } }</code>
Gestion de l'état dans les composants fonctionnels:
Dans les composants fonctionnels, l'état est géré à l'aide du crochet useState
introduit dans React 16.8. Le crochet useState
vous permet d'ajouter l'état aux composants fonctionnels. Voici comment il est utilisé:
<code class="javascript">import React, { useState } from 'react'; function ExampleComponent() { const [count, setCount] = useState(0); const incrementCount = () => { setCount(count 1); }; return ( <div> <p>Count: {count}</p> <button onclick="{incrementCount}">Increment</button> </div> ); }</code>
Dans cet exemple, useState
renvoie un tableau où le premier élément est la valeur d'état actuelle, et la seconde est une fonction pour la mettre à jour.
MISE À JOUR ATTAT:
this.setState()
. Il peut prendre un objet ou une fonction comme un argument. Lorsque vous utilisez un objet, React fusionne l'objet avec l'état actuel. L'utilisation d'une fonction garantit que vous travaillez avec l'État le plus récent, ce qui est important pour les mises à jour d'état asynchrones.useState
. Cette fonction prend la nouvelle valeur d'état comme argument et met à jour l'état.Différences entre SetState et UseState:
Syntaxe et utilisation:
setState
est une méthode sur l'instance de classe et doit être liée si elle est utilisée dans les gestionnaires d'événements.useState
renvoie un tableau que vous pouvez utiliser avec la destruction du tableau, le rendant plus concis et simple.Nature asynchrone:
setState
et la fonction renvoyée par useState
sont asynchrones. Cependant, setState
peut accepter une fonction de rappel à exécuter après la mise à jour de l'état, tandis useState
ne fournit pas ce mécanisme intégré. Vous utiliseriez généralement useEffect
pour gérer les effets secondaires après un changement d'état dans les composants fonctionnels.État de fusion:
setState
fusionne le nouvel état avec l'état existant, qui est utile pour mettre à jour des objets ou des tableaux imbriqués.useState
Setter remplace toute la valeur de l'état. Vous devez fusionner manuellement l'état dans les composants fonctionnels, en utilisant souvent le formulaire de mise à jour de fonction comme setCount(prevCount => prevCount 1)
.Meilleures pratiques pour gérer un état complexe:
.map()
, .filter()
et l'opérateur de diffusion pour créer de nouveaux objets d'état.Méthodes de cycle de vie par rapport à l'utilisation d'effet:
componentDidMount
, componentDidUpdate
et componentWillUnmount
. Ils sont utilisés pour gérer les effets secondaires tels que la récupération des données, la configuration des abonnements et les nettoyer.useEffect
est l'équivalent à toutes les méthodes de cycle de vie dans les composants fonctionnels. Il peut fonctionner après chaque rendu, après le premier rendu, ou lorsque des dépendances spécifiques changent. Vous pouvez retourner une fonction de nettoyage pour gérer les composants avec un comportement de type de type.Exemple d'utilisation d'effet:
<code class="javascript">import React, { useState, useEffect } from 'react'; function ExampleComponent() { const [count, setCount] = useState(0); useEffect(() => { document.title = `Count: ${count}`; // Cleanup function return () => { document.title = 'React App'; }; }, [count]); return ( <div> <p>Count: {count}</p> <button onclick="{()"> setCount(count 1)}>Increment</button> </div> ); }</code>
Effet de la gestion de l'État sur la rediffusion:
shouldComponentUpdate
pour éviter les redevateurs inutiles en renvoyant false
si les nouveaux accessoires ou l'état ne provoquent pas de changement visuel. Dans les composants fonctionnels, React.memo
sert un objectif similaire, empêchant les redevances si les accessoires n'ont pas changé.Techniques d'optimisation:
React.PureComponent
pour les composants de classe. Il met en œuvre shouldComponentUpdate
avec un accessoire peu profond et une comparaison d'état.React.memo
pour éviter les redevateurs inutiles si les accessoires sont les mêmes.useCallback
pour mémoriser les fonctions de rappel et useMemo
pour mémoriser des valeurs calculées, empêchant des re-ordinateurs inutiles.key
pour aider à réagir d'identifier quels éléments ont changé, ont été ajoutés ou ont été supprimés.React.lazy
et Suspense
pour charger les composants uniquement lorsqu'ils sont nécessaires, réduisant la taille initiale du bundle et améliorant les temps de chargement.react-window
ou react-virtualized
pour ne rendre que les éléments visibles.Exemple d'optimisation avec mémo et usecallback:
<code class="javascript">import React, { useState, useCallback } from 'react'; const ChildComponent = React.memo(function ChildComponent({ onClick }) { console.log('ChildComponent rendered'); return <button onclick="{onClick}">Click me</button>; }); function ParentComponent() { const [count, setCount] = useState(0); const handleClick = useCallback(() => { setCount(count 1); }, [count]); return ( <div> <p>Count: {count}</p> <childcomponent onclick="{handleClick}"></childcomponent> </div> ); }</code>
Dans cet exemple, ChildComponent
ne renforcera que si onClick
change, grâce à React.memo
et useCallback
.
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!