Malheureusement, useRef est sous-estimé. Ce n’est pas l’un des hameçons les plus populaires, mais il est bénéfique. Savoir comment et où l'utiliser peut obtenir d'excellents résultats.
useRef est un React Hook qui vous permet de référencer une valeur non nécessaire pour le rendu.
React se souviendra de la valeur que vous créez via useRef, que vous créiez un objet JavaScript faisant référence à un nœud dans le DOM ou à une valeur simple, et elle ne sera pas perdue lors des nouveaux rendus.
Accès aux éléments DOM :
Stockage des valeurs mutables :
Voici quelques exemples pour illustrer la puissance de useRef.
import React, { useRef } from 'react'; const Counter = () => { const refCount = useRef(0); const refInputField = useRef(null); const onClick = () => { refCount.current = refCount.current + 1; refInputField.current.focus(); } return ( <> <button onClick={onClick}> Click me! </button> <input ref={refInputField} /> </> ); }; export default Counter;
Dans cet exemple :
Un autre cas d'utilisation courant de useRef consiste à garder une trace des valeurs précédentes.
import React, { useRef, useEffect, useState } from 'react'; const PreviousValue = () => { const [count, setCount] = useState(0); const prevCountRef = useRef(); useEffect(() => { prevCountRef.current = count; }, [count]); return ( <div> <h1>Current Count: {count}</h1> <h2>Previous Count: {prevCountRef.current}</h2> <button onClick={() => setCount(count + 1)}>Increment</button> </div> ); }; export default PreviousValue;
Dans cet exemple :
useRef peut être utilisé pour conserver les valeurs à travers les rendus sans provoquer de nouveau rendu, contrairement à useState. Ceci est particulièrement utile pour stocker des valeurs qui n'ont pas d'impact direct sur l'interface utilisateur mais qui doivent être mémorisées.
Exemple : suivi du nombre de rendus d'un composant.
import React, { useRef, useEffect } from 'react'; const RenderCounter = () => { const renderCount = useRef(0); useEffect(() => { renderCount.current += 1; }); return ( <div> <p>This component has rendered {renderCount.current} times</p> </div> ); }; export default RenderCounter;
useRef est inestimable lorsque vous travaillez avec des bibliothèques tierces qui nécessitent une manipulation directe des éléments DOM, comme l'intégration avec des bibliothèques de graphiques, la gestion de lecteurs vidéo ou la gestion d'animations.
Exemple : Intégration d'une bibliothèque de graphiques.
import React, { useRef, useEffect } from 'react'; import Chart from 'chart.js/auto'; const ChartComponent = () => { const chartRef = useRef(null); useEffect(() => { const ctx = chartRef.current.getContext('2d'); new Chart(ctx, { type: 'line', data: { labels: ['January', 'February', 'March', 'April'], datasets: [{ label: 'Sales', data: [65, 59, 80, 81], }], }, }); }, []); return <canvas ref={chartRef}></canvas>; }; export default ChartComponent;
Dans les applications complexes où les performances sont essentielles, l'utilisation de useRef pour stocker des objets mutables peut permettre d'éviter des rendus inutiles.
Exemple : stockage d'un objet d'état mutable.
import React, { useRef } from 'react'; const MutableState = () => { const state = useRef({ name: 'John Doe', age: 30, }); const updateName = (newName) => { state.current.name = newName; console.log('Name updated:', state.current.name); }; return ( <div> <button onClick={() => updateName('Jane Doe')}> Update Name </button> </div> ); }; export default MutableState;
L'utilisation de useRef peut aider à éviter les problèmes de fermeture en fournissant une référence stable à une valeur qui persiste à travers les rendus.
Exemple : minuterie avec useRef pour éviter un état obsolète.
import React, { useRef, useState, useEffect } from 'react'; const Timer = () => { const [count, setCount] = useState(0); const countRef = useRef(count); countRef.current = count; useEffect(() => { const intervalId = setInterval(() => { setCount(countRef.current + 1); }, 1000); return () => clearInterval(intervalId); }, []); return <div>Count: {count}</div>; }; export default Timer;
Les crochets sont géniaux et vous devriez les utiliser. Vous pouvez réaliser beaucoup de choses si vous comprenez comment fonctionne React et appliquez correctement les hooks. useRef est particulièrement puissant pour :
En comprenant et en utilisant useRef, vous pouvez écrire des composants React plus efficaces et efficients. Le véritable pouvoir des hooks réside dans la compréhension de leur comportement et dans leur application judicieuse.
Savez-vous que useState n'est pas toujours la bonne réponse ?
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!