Rumah > hujung hadapan web > tutorial js > 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
Lepaskan: 2024-11-03 02:23:29
asal
904 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan