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
elemen. Fungsi pelarasan ini menerima elemen DOM sebagai parameter, yang membolehkan anda: ref
useEffect
useEffect
<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>
<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>
useEffect
<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>
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!