Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk menguruskan berbilang rujukan untuk pelbagai elemen dalam React menggunakan cangkuk?

Bagaimana untuk menguruskan berbilang rujukan untuk pelbagai elemen dalam React menggunakan cangkuk?

Barbara Streisand
Barbara Streisandasal
2024-11-03 02:23:29840semak imbas

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

Rujukan Berbilang untuk Tatasusunan Elemen Menggunakan Cangkuk

Dalam React, cangkuk useRef membenarkan pembangun mengurus rujukan DOM kepada elemen. Biasanya, rujukan digunakan untuk mengakses satu elemen. Walau bagaimanapun, pendekatan ini mungkin tidak sesuai untuk tatasusunan elemen.

Untuk bekerja dengan berbilang rujukan bagi tatasusunan elemen menggunakan cangkuk, pendekatan yang sedikit berbeza diperlukan. Mari kita pertimbangkan situasi berikut:

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

Dalam contoh ini, kami cuba mencipta berbilang rujukan dengan hanya menghantar elRef yang sama kepada setiap elemen dalam tatasusunan. Walau bagaimanapun, pendekatan ini akan menyebabkan hanya elemen terakhir dirujuk.

Untuk mengatasi isu ini, kami boleh memanfaatkan teknik berikut:

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

Dalam penyelesaian yang dipertingkatkan ini, kami menggunakan itemsRef tatasusunan untuk memegang rujukan. Kami memulakan tatasusunan dengan tatasusunan kosong. Dalam useEffect, kami mengemas kini tatasusunan itemsRef agar sepadan dengan panjang tatasusunan props.items. Ini memastikan bahawa kita mempunyai rujukan yang sepadan untuk setiap item dalam tatasusunan.

Kini, kita boleh mengakses rujukan elemen individu menggunakan itemsRef.current[n], dengan n ialah indeks unsur dalam tatasusunan.

Atas ialah kandungan terperinci Bagaimana untuk menguruskan berbilang rujukan untuk pelbagai elemen dalam React menggunakan cangkuk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn