Bagaimana Menggunakan Rujukan Berbilang dengan Cangkuk untuk Susunan Unsur?

DDD
Lepaskan: 2024-11-03 07:53:30
asal
1018 orang telah melayarinya

How to Use Multiple Refs with Hooks for an Array of Elements?

Menggunakan Rujukan Berbilang untuk Susunan Elemen dengan Cangkuk

Cangkuk useRef menyediakan rujukan berterusan kepada elemen dalam komponen React anda. Ia membolehkan anda mengakses dan mengubah suai elemen DOM secara terus. Dalam kes satu elemen, menggunakan useRef adalah mudah. Walau bagaimanapun, bagaimana jika anda ingin menggunakan berbilang rujukan untuk tatasusunan elemen?

Masalahnya

Pertimbangkan kod berikut:

<code class="js">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>
  );
};

ReactDOM.render(
  <App />,
  document.getElementById("root")
);</code>
Salin selepas log masuk

Kod ini akan menyebabkan ralat kerana elRef.current bukan tatasusunan. Ia adalah rujukan kepada elemen pertama dalam tatasusunan.

Penyelesaian dengan Ref Luar

Penyelesaian yang mungkin untuk masalah ini ialah menggunakan rujukan luaran untuk mengekalkan jejak pelbagai elemen. Berikut ialah contoh:

<code class="js">const itemsRef = useRef([]);

const App = (props) => {
  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 kes ini, itemsRef.current ialah tatasusunan yang memegang rujukan kepada semua elemen dalam tatasusunan. Anda boleh mengakses elemen ini menggunakan itemsRef.current[n].

Nota: Adalah penting untuk diingat bahawa cangkuk tidak boleh digunakan di dalam gelung. Oleh itu, cangkuk useEffect digunakan di luar gelung untuk mengemas kini tatasusunan itemsRef.

Atas ialah kandungan terperinci Bagaimana Menggunakan Rujukan Berbilang dengan Cangkuk untuk Susunan Unsur?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan