react 의 따끈따끈한 hook 을
설명해 드리겠습니다.
useId
React 18 version 으로 출시된 따근따근한 hook 입니다. useId 는 고유한 id 를 만들고 싶을 때 사용하면 됩니다.
function App() {
const id = useId();
console.log(id); // :r0:
}
useId 는 input 의 label 로 사용하는 경우가 있습니다.
아래 코드가 예시 코드 입니다.
import { useId } from "react";
function MyInput() {
const id = useId();
return (
<div>
<label htmlFor={id}>이름</label>
<input id={id}/>
</div>
)
}
function App() {
return (
<div>
<MyInput/>
</div>
)
}
하지만 굳이 useId 를 왜 써야 할지 의문을 품을 수 있습니다. 간단하게 math.random() 으로 id 값을 랜덤으로 주거나 임의로 1,2,3 이라는 숫자를 넣거나 password, username 이라고 명시적으로 이름을 넣을 수 있겠죠.
만약 한 페이지에 두개 이상의 공통된 input component 를 써야 한다면 label 을 클릭했을 때 엉뚱한 input 에 focus 가 맞춰지는 경우가 생길 수 있습니다. 그러한 이유는 밑에 코드처럼 어떤 label 이 어떤 input 에 해당하는지 알 수 없기 때문입니다.
import { useId } from "react";
function MyInput() {
const id = math.random(); // 이러면 서버 비용도 발생
return (
<div>
<label htmlFor={id}>이름</label>
<input id={id}/>
</div>
)
}
function App() {
return (
<div>
<MyInput/>
<MyInput/>
</div>
)
}
만약 id 값을 math.random() 으로 만들고 있다면 컴포넌트가 리렌더링 될때마다 id 값이 바뀌기 때문에 불필요한 서버 비용이 발생하기 때문에 useId() 로 설정을 하면 리렌더링해도 id 값이 바뀌지 않습니다.
import { useId } from "react";
function MyInput() {
const id = useId();
return (
<div>
<label htmlFor={id}>이름</label>
<input id={id}/>
</div>
)
}
function App() {
return (
<div>
<MyInput/>
<MyInput/>
</div>
)
}
'React' 카테고리의 다른 글
메뉴 밑줄 슬라이딩 만들기 (0) | 2024.08.26 |
---|---|
React 에서 formData 다루기 (0) | 2024.08.21 |
useLayoutEffect (0) | 2024.08.13 |
React-throttle (0) | 2024.08.12 |
React-Debounce (0) | 2024.08.08 |