Rumah > hujung hadapan web > tutorial js > Callback refs vs. useeffect: Bilakah menggunakan yang mana

Callback refs vs. useeffect: Bilakah menggunakan yang mana

Linda Hamilton
Lepaskan: 2025-01-29 18:34:15
asal
584 orang telah melayarinya

Callback Refs vs. useEffect: When to use which Dalam pembangunan komponen reaksi

, pengurusan kesan sampingan dan interaksi DOM adalah kritikal.

dan ref callback adalah dua alat yang berkuasa. useEffect Ia adalah cangkuk pelbagai fungsi untuk menangani pelbagai kesan sampingan, dan REF Recovery menyediakan kaedah yang lebih langsung dan lebih cekap dalam senario tertentu. useEffect

kembali REF Penjelasan terperinci

Return Ref membolehkan akses langsung ke elemen DOM sebenar dalam komponen berfungsi. Lulus fungsi panggil balik ke atribut

elemen. Fungsi pelarasan ini menerima elemen DOM sebagai parameter, yang membolehkan anda: ref

    secara langsung beroperasi DOM: Tetapkan fokus, laraskan saiz elemen, gaya aplikasi, dan sebagainya.
  • Interaksi dengan Perpustakaan Parti Ketiga: Bersepadu dengan Perpustakaan Operasi Langsung Elemen DOM (seperti Galeri, Perpustakaan Kanvas).
bila menggunakan panggilan balik ref

    operasi DOM langsung:
    • anda perlu menetapkan atau membersihkan logik yang berkaitan dengan DOM (seperti pengurusan fokus dan menyesuaikan elemen). Kembali REF boleh mengakses elemen DOM secara langsung untuk mencapai operasi yang tepat dan cekap.
  • Perpustakaan Ketiga -Party:
    • Inisialisasi atau berinteraksi dengan operasi langsung elemen DOM (seperti galeri bersepadu, pemprosesan interaksi kanvas). Kembali REF membolehkan anda lulus elemen DOM terus ke API perpustakaan.
  • Elakkan Re -rendering Dependencies:
    • item bergantung boleh menyebabkan re -rendering yang tidak perlu, yang mempengaruhi prestasi. Dengan menggunakan ref callback, anda boleh mengelakkan mengandungi elemen DOM itu sendiri dalam pelbagai
    • yang bergantung, dengan itu mengurangkan bilangan rendering. useEffect useEffect
  • Contoh: Pengurusan Fokus

Contoh: gulung ke bahagian bawah
<code class="language-javascript">import React, { useRef } from 'react';

function InputWithFocus() {
  const inputRef = useRef(null);

  const handleRef = (element) => {
    if (element) {
      element.focus();
    }
  };

  return <input ref={handleRef} />;
}</code>
Salin selepas log masuk

kembali ref:

:
<code class="language-javascript">import React, { useState, useRef, useCallback } from 'react';

function Chat() {
  const [messages, setMessages] = useState([]);
  const messagesEndRef = useRef(null);

  const scrollToBottom = useCallback(() => {
    if (messagesEndRef.current) {
      messagesEndRef.current.scrollIntoView({ behavior: 'smooth' });
    }
  }, [messages]); 

  const handleSendMessage = () => {
    setMessages([...messages, "New Message"]); 
    scrollToBottom(); 
  };

  return (
    <div>
      {messages.map((msg, index) => (
        <div key={index}>{msg}</div>
      ))}
      <div ref={messagesEndRef} />
      <button onClick={handleSendMessage}>Send</button>
    </div>
  );
}</code>
Salin selepas log masuk

Pilih kaedah yang betul useEffect

Untuk operasi DOM langsung dan elakkan yang tidak perlu untuk keadaan yang penting, biasanya lebih disukai untuk memulihkan ref.
<code class="language-javascript">import React, { useState, useEffect, useRef } from 'react';

function Chat() {
  const [messages, setMessages] = useState([]);
  const messagesEndRef = useRef(null);

  useEffect(() => {
    scrollToBottom();
  }, [messages]);

  const scrollToBottom = () => {
    if (messagesEndRef.current) {
      messagesEndRef.current.scrollIntoView({ behavior: 'smooth' });
    }
  };

  const handleSendMessage = () => {
    setMessages([...messages, "New Message"]); 
  };

  return (
    <div>
      {messages.map((msg, index) => (
        <div key={index}>{msg}</div>
      ))}
      <div ref={messagesEndRef} />
      <button onClick={handleSendMessage}>Send</button>
    </div>
  );
}</code>
Salin selepas log masuk

Untuk adegan atau prestasi yang lebih mudah bukanlah titik perhatian utama, `useeffect` adalah pilihan yang sesuai.

    Dengan memahami kelebihan ref dan `useeffect`, anda dapat membuat keputusan yang bijak mengenai cara menguruskan kesan sampingan dalam komponen React dan berinteraksi dengan DOM.

Atas ialah kandungan terperinci Callback refs vs. useeffect: Bilakah menggunakan yang mana. 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