Heim >Web-Frontend >js-Tutorial >Wie verwalte ich mehrere Refs für ein Array von Elementen in React mithilfe von Hooks?

Wie verwalte ich mehrere Refs für ein Array von Elementen in React mithilfe von Hooks?

Barbara Streisand
Barbara StreisandOriginal
2024-11-03 02:23:29899Durchsuche

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

Mehrere Refs für ein Array von Elementen mithilfe von Hooks

In React können Entwickler mit dem useRef-Hook DOM-Referenzen auf Elemente verwalten. Typischerweise werden Referenzen verwendet, um auf ein einzelnes Element zuzugreifen. Allerdings ist dieser Ansatz möglicherweise nicht für Arrays von Elementen geeignet.

Um mit mehreren Refs für ein Array von Elementen mithilfe von Hooks zu arbeiten, ist ein etwas anderer Ansatz erforderlich. Betrachten wir die folgende Situation:

<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>

In diesem Beispiel versuchen wir, mehrere Referenzen zu erstellen, indem wir einfach dieselbe elRef an jedes Element im Array übergeben. Dieser Ansatz führt jedoch dazu, dass nur auf das letzte Element verwiesen wird.

Um dieses Problem zu lösen, können wir die folgende Technik nutzen:

<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>

In dieser verbesserten Lösung verwenden wir die itemsRef Array zur Aufnahme der Referenzen. Wir initialisieren das Array mit einem leeren Array. Im useEffect aktualisieren wir das Array „itemsRef“ so, dass es der Länge des Arrays „props.items“ entspricht. Dadurch wird sichergestellt, dass wir für jedes Element im Array eine entsprechende Referenz haben.

Jetzt können wir mit itemsRef.current[n] auf einzelne Elementreferenzen zugreifen, wobei n der Index des Elements im Array ist.

Das obige ist der detaillierte Inhalt vonWie verwalte ich mehrere Refs für ein Array von Elementen in React mithilfe von Hooks?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn