useRef는 무엇을 위한 것입니까? 언제 사용해야 하나요?
9107 단어 react
문서를 반복해서 읽으려고 했지만 여전히 useRef를 이해하지 못한다면 이 게시물이 적합합니다!
useRef란 무엇입니까?
useRef
는 나중에 사용하기 위해 무언가를 보관할 수 있는 상자와 같습니다. 숫자, 물건, 원하는 모든 것.useRef
이 상자에 저장한 항목은
useState
와 유사하게 렌더링 간에 보존됩니다. 즉, 구성 요소가 업데이트될 때 상자가 파괴되지 않습니다.그리고 상자 내용물을 변경해도 구성 요소에는 아무 일도 일어나지 않습니다. 상자 내용물은 변경되지만 구성 요소는 동일하게 유지됩니다.
관찰:
useState
)와 달리 ref 값을 업데이트해도 새 렌더링이 트리거되지 않습니다. this.value = someValue
)에 무언가를 저장하는 것과 같습니다. 그것은 무엇을 위해 사용됩니까?
그래 좋아.
useRef
구성 요소 "메모리"에 무언가를 저장하는 데 사용되지만 값이 업데이트될 때 새 렌더링을 트리거하지 않습니다.그러나 그것은 무엇을 위해 사용됩니까?
두 가지 주요 사용 사례가 있습니다.
1) 나중에 할 수 있도록 DOM 요소를 저장합니다.
예를 들어 사용자가 이메일 입력에서 "ENTER"를 누를 때 비밀번호 입력에 초점을 맞출 수 있습니다.
"ENTER"를 누를 때 다음 요소에 초점을 맞춥니다.
useRef
( source code )로 할 수 있습니다.export default function App() {
const emailRef = useRef();
const passwordRef = useRef();
return (
<div className="App">
<p>
<label htmlFor="email">Email:</label>
<input
id="email"
ref={emailRef}
onKeyPress={({ charCode }) => {
if (charCode === 13) {
passwordRef.current.focus();
}
}}
/>
</p>
<p>
<label htmlFor="password">Password:</label>
<input id="password" ref={passwordRef} />
</p>
</div>
);
}
입력 구성 요소에 대한 참조를 저장하는 useRef 예제2) 주시하고 싶은 값을 저장하려면
때로는 값을 주시하고 싶지만 값이 변경될 때 새 렌더링을 트리거할 필요는 없습니다.
예: storing the previous value of a state variable .
이것은 카운터와 이전 값을 표시하는 간단한 응용 프로그램입니다. 또한 카운터를 증가시키는 두 개의 버튼이 있습니다(1 및 10).
이전 값을 저장하기 위한 useRef의 예
Source code :
function Counter() {
const [count, setCount] = useState(0);
const prevCountRef = useRef();
useEffect(() => {
prevCountRef.current = count;
});
const prevCount = prevCountRef.current;
return (
<div className="App">
<h1>Previous value with useRef</h1>
<p>
<button onClick={() => setCount((value) => value + 1)}>
Increase counter by 1
</button>
<button onClick={() => setCount((value) => value + 10)}>
Increase counter by 10
</button>
</p>
<p>
Now: {count}, before: {prevCount}
</p>
</div>
);
}
이전 값을 저장하는 useRef
Reference
이 문제에 관하여(useRef는 무엇을 위한 것입니까? 언제 사용해야 하나요?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codewithnico/what-is-useref-for-when-should-i-use-it-1ng2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)