Dalam pembangunan komponen reaksi
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
import React, { useRef } from 'react'; function InputWithFocus() { const inputRef = useRef(null); const handleRef = (element) => { if (element) { element.focus(); } }; return <input ref={handleRef} />; }
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> ); }
useEffect
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> ); }
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!