Maison > interface Web > js tutoriel > Comment gérer plusieurs références pour un tableau d'éléments dans React à l'aide de hooks ?

Comment gérer plusieurs références pour un tableau d'éléments dans React à l'aide de hooks ?

Barbara Streisand
Libérer: 2024-11-03 02:23:29
original
890 Les gens l'ont consulté

How to manage multiple refs for an array of elements in React using hooks?

Références multiples pour un tableau d'éléments à l'aide de hooks

Dans React, le hook useRef permet aux développeurs de gérer les références DOM aux éléments. En règle générale, les références sont utilisées pour accéder à un seul élément. Cependant, cette approche peut ne pas convenir aux tableaux d'éléments.

Pour travailler avec plusieurs références pour un tableau d'éléments à l'aide de hooks, une approche légèrement différente est requise. Considérons la situation suivante :

<code class="javascript">const { useRef, useState, useEffect } = React;

const App = () => {
  const elRef = useRef();
  const [elWidth, setElWidth] = useState();

  useEffect(() => {
    setElWidth(elRef.current.offsetWidth);
  }, []);

  return (
    <div>
      {[1, 2, 3].map(el => (
        <div ref={elRef} style={{ width: `${el * 100}px` }}>
          Width is: {elWidth}
        </div>
      ))}
    </div>
  );
};</code>
Copier après la connexion

Dans cet exemple, nous essayons de créer plusieurs références en passant simplement le même elRef à chaque élément du tableau. Cependant, cette approche entraînera le référencement uniquement du dernier élément.

Pour surmonter ce problème, nous pouvons exploiter la technique suivante :

<code class="javascript">const App = props => {
  const itemsRef = useRef([]);
  // you can access the elements with itemsRef.current[n]

  useEffect(() => {
    itemsRef.current = itemsRef.current.slice(0, props.items.length);
  }, [props.items]);

  return props.items.map((item, i) => (
    <div
      key={i}
      ref={el => (itemsRef.current[i] = el)}
      style={{ width: `${(i + 1) * 100}px` }}
    >
      ...
    </div>
  ));
};</code>
Copier après la connexion

Dans cette solution améliorée, nous utilisons la propriété itemsRef tableau pour contenir les références. Nous initialisons le tableau avec un tableau vide. Dans useEffect, nous mettons à jour le tableau itemsRef pour qu'il corresponde à la longueur du tableau props.items. Cela garantit que nous avons une référence correspondante pour chaque élément du tableau.

Maintenant, nous pouvons accéder aux références d'éléments individuels en utilisant itemsRef.current[n], où n est l'index de l'élément dans le tableau.

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:php.cn
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