useRef 후크는 다시 렌더링하지 않고 렌더링 전반에 걸쳐 값을 유지하는 데 사용되는 내장 React 후크입니다. DOM 요소와 직접 상호작용하고 렌더링 간에 유지되어야 하지만 반드시 다시 렌더링을 트리거할 필요는 없는 값을 저장하는 데 자주 사용됩니다.
useRef 후크는 주로 두 가지 목적으로 사용됩니다.
const myRef = useRef(initialValue);
useRef가 반환한 참조 객체에는 실제 값이 저장되는 현재 속성이 있습니다.
const MyComponent = () => { const inputRef = useRef(null); const focusInput = () => { // Access the DOM node and focus it inputRef.current.focus(); }; return ( <div> <input ref={inputRef} /> <button onClick={focusInput}>Focus Input</button> </div> ); };
const TimerComponent = () => { const countRef = useRef(0); const increment = () => { countRef.current++; console.log(countRef.current); // This will log the updated value }; return ( <div> <p>Current count (does not trigger re-render): {countRef.current}</p> <button onClick={increment}>Increment</button> </div> ); };
const ScrollToTop = () => { const topRef = useRef(null); const scrollToTop = () => { topRef.current.scrollIntoView({ behavior: 'smooth' }); }; return ( <div> <div ref={topRef}> <ol> <li> <strong>Storing Previous State</strong>: If you need to track the previous value of a prop or state value. </li> </ol> <pre class="brush:php;toolbar:false"> const PreviousState = ({ count }) => { const prevCountRef = useRef(); useEffect(() => { prevCountRef.current = count; // Store the current value in the ref }, [count]); return ( <div> <p>Current Count: {count}</p> <p>Previous Count: {prevCountRef.current}</p> </div> ); };
복잡한 값에 대한 재렌더링 방지: 재렌더링을 트리거할 필요가 없는 큰 개체나 복잡한 데이터 구조가 있는 경우 useRef는 구성 요소의 값에 영향을 주지 않고 이를 저장할 수 있습니다. 공연.
추적 간격 또는 시간 초과: 시간 초과 또는 간격의 ID를 저장하여 나중에 지울 수 있습니다.
const myRef = useRef(initialValue);
Feature | useRef | useState |
---|---|---|
Triggers re-render | No (does not trigger a re-render) | Yes (triggers a re-render when state changes) |
Use Case | Storing mutable values or DOM references | Storing state that affects rendering |
Value storage | Stored in current property | Stored in state variable |
Persistence across renders | Yes (keeps value across renders without triggering re-render) | Yes (but triggers re-render when updated) |
다음은 유효하지 않은 입력 필드에 초점을 맞춰 양식 유효성 검사에 useRef를 사용하는 예입니다.
'react'에서 React, { useRef, useState }를 가져옵니다. const FormComponent = () => { const inputRef = useRef(); const [inputValue, setInputValue] = useState(''); const [error, setError] = useState(''); const verifyInput = () => { if (inputValue === '') { setError('입력값은 비워둘 수 없습니다.'); inputRef.current.focus(); // 입력 요소에 초점을 맞춥니다. } 또 다른 { setError(''); } }; 반품 ( <div> <입력 참조={inputRef} 유형="텍스트" 값={입력값} onChange={(e) => setInputValue(e.target.value)} /> {오류 && <p>
useRef 후크는 React에서 변경 가능한 값과 직접적인 DOM 조작을 처리하는 데 매우 유용합니다. 양식 요소로 작업하든, 이전 상태를 추적하든, 타사 라이브러리와 상호작용하든, useRef는 깔끔하고 효율적인 솔루션을 제공합니다. useRef를 사용하면 불필요한 재렌더링을 트리거하지 않고 지속성을 유지할 수 있으므로 성능에 민감한 작업에 탁월한 선택입니다.
위 내용은 Reacts useRef Hook 익히기: DOM 및 가변 값 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!