ホームページ >ウェブフロントエンド >jsチュートリアル >Callback Refs vs. UseEffect:いつ使用するか
およびコールバックrefは2つの強力なツールです。 useEffect
これは、さまざまな副作用に対処するための多機能フックであり、Recovery Refは特定のシナリオでより直接的で効率的な方法を提供します。 useEffect
属性に渡します。この調整関数は、パラメーターとしてDOM要素を受信し、次のことを可能にします。
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>
以上がCallback Refs vs. UseEffect:いつ使用するかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。