ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

web/react hook

useId

dev_been94 2024. 12. 14. 12:02
728x90
๋ฐ˜์‘ํ˜•

useId

 

๐ŸŽฏ useId๋ž€ ๋ฌด์—‡์ผ๊นŒ?

**useId**๋Š” React์—์„œ ๊ณ ์œ ํ•œ ID๋ฅผ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋„๊ตฌ์˜ˆ์š”.
์—ฌ๊ธฐ์„œ "๊ณ ์œ ํ•˜๋‹ค"๋Š” ๋ง์€ ๋‹ค๋ฅธ ์š”์†Œ๋“ค๊ณผ ๊ฒน์น˜์ง€ ์•Š๋Š” ID๋ผ๋Š” ๋œป์ด์—์š”.

์™œ ํ•„์š”ํ• ๊นŒ์š”?

  • HTML์˜ <label>๊ณผ <input>์„ ์—ฐ๊ฒฐํ•  ๋•Œ,
  • ์—ฌ๋Ÿฌ ์š”์†Œ๊ฐ€ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ์—์„œ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ID๊ฐ€ ํ•„์š”ํ•  ๋•Œ,

์ด๋•Œ **useId**๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ณ ์œ ํ•œ ID๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.

 

๐Ÿ“ฆ ํƒ๋ฐฐ ์ƒ์ž ์ด๋ฆ„ํ‘œ ์ด์•ผ๊ธฐ

์—ฌ๋Ÿฌ๋ถ„์ด ํƒ๋ฐฐ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋ณด๋ƒˆ๋‹ค๊ณ  ์ƒ์ƒํ•ด๋ณด์„ธ์š”. ๐Ÿ“ฆ
๋ชจ๋“  ์ƒ์ž์—๋Š” **์ด๋ฆ„ํ‘œ(ID)**๊ฐ€ ๋ถ™์–ด ์žˆ์–ด์•ผ ํ•˜์ฃ ?

  • ์ด๋ฆ„ํ‘œ๊ฐ€ ์—†์œผ๋ฉด ์ƒ์ž๋“ค์ด ์—‰์ผœ์„œ ์–ด๋””๋กœ ๊ฐ€์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒŒ ๋ผ์š”.
  • ์ด๋ฆ„ํ‘œ๊ฐ€ ์ค‘๋ณต๋˜๋ฉด ์ƒ์ž๊ฐ€ ์ž˜๋ชป ๋ฐฐ๋‹ฌ๋  ์ˆ˜ ์žˆ์–ด์š”.

React์—์„œ๋„ ์—ฌ๋Ÿฌ ์š”์†Œ๋“ค์ด ์žˆ์„ ๋•Œ **"๊ฐ ์š”์†Œ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ์ด๋ฆ„ํ‘œ(ID)"**๊ฐ€ ํ•„์š”ํ•ด์š”.
์ด๊ฑธ **useId**๊ฐ€ ์ž๋™์œผ๋กœ ๋ถ™์—ฌ์ค€๋‹ต๋‹ˆ๋‹ค!

 

๐Ÿ› ๏ธ useId ์ฝ”๋“œ ์˜ˆ์‹œ

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋กœ ์„ค๋ช…ํ•ด๋“œ๋ฆด๊ฒŒ์š”. **useId**๋ฅผ ์‚ฌ์šฉํ•ด์„œ <label>๊ณผ <input>์„ ์—ฐ๊ฒฐํ•˜๋Š” ์˜ˆ์ œ์˜ˆ์š”:

import React, { useId } from "react";

function MyForm() {
  const id = useId(); // ๊ณ ์œ ํ•œ ID๋ฅผ ์ƒ์„ฑํ•ด์š”

  return (
    <div>
      <label htmlFor={id}>์ด๋ฆ„:</label>
      <input id={id} type="text" placeholder="์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”" />
    </div>
  );
}

export default MyForm;

 

๐Ÿ” ์ฝ”๋“œ์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ ๊นŒ?

  1. useId()
    • React๊ฐ€ ์ž๋™์œผ๋กœ ๊ณ ์œ ํ•œ ID๋ฅผ ์ƒ์„ฑํ•ด์ค˜์š”.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, id ๊ฐ’์ด "id-1234"์ฒ˜๋Ÿผ ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ์–ด์š”.
  2. htmlFor์™€ id
    • <label>๊ณผ <input>์„ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด **htmlFor**์™€ **id**๋ฅผ ์‚ฌ์šฉํ•ด์š”.
    • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ™”๋ฉด ๋ฆฌ๋”๊ธฐ๋‚˜ ์ ‘๊ทผ์„ฑ ๋„๊ตฌ๊ฐ€ label์„ ํด๋ฆญํ–ˆ์„ ๋•Œ input์— ์ดˆ์ ์„ ๋งž์ถœ ์ˆ˜ ์žˆ์–ด์š”.
  3. ๊ฒฐ๊ณผ
    • useId ๋•๋ถ„์— ID๊ฐ€ ์ค‘๋ณต๋  ๊ฑฑ์ • ์—†์ด ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”! ๐Ÿ˜Š

 

๐Ÿงฉ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์š”์†Œ์— ID๋ฅผ ์ ์šฉํ•ด๋ณผ๊นŒ์š”?

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž…๋ ฅ์ฐฝ์ด ์žˆ์–ด๋„ **useId**๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ID ์ถฉ๋Œ์ด ์—†์–ด์š”.

import React, { useId } from "react";

function MyForm() {
  const firstNameId = useId();
  const lastNameId = useId();

  return (
    <div>
      <div>
        <label htmlFor={firstNameId}>์ด๋ฆ„:</label>
        <input id={firstNameId} type="text" placeholder="์ด๋ฆ„ ์ž…๋ ฅ" />
      </div>
      <div>
        <label htmlFor={lastNameId}>์„ฑ:</label>
        <input id={lastNameId} type="text" placeholder="์„ฑ ์ž…๋ ฅ" />
      </div>
    </div>
  );
}

export default MyForm;

 

๐Ÿš€ useId์˜ ์žฅ์ 

  1. ์ค‘๋ณต ๊ฑฑ์ • ๋!
    • useId๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ Œ๋”๋งํ•ด๋„ ํ•ญ์ƒ ๊ณ ์œ ํ•œ ID๋ฅผ ๋งŒ๋“ค์–ด์ค˜์š”.
  2. ์ ‘๊ทผ์„ฑ ํ–ฅ์ƒ
    • <label>๊ณผ <input>์„ ์ •ํ™•ํžˆ ์—ฐ๊ฒฐํ•ด์„œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋” ์ข‹๊ฒŒ ๋งŒ๋“ค์–ด์š”.
  3. ํŽธ๋ฆฌํ•จ
    • ๋”ฐ๋กœ ID๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌํ•  ํ•„์š” ์—†์ด ํ•œ ์ค„ ์ฝ”๋“œ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์š”.

 

๐ŸŒŸ ํ•œ ์ค„ ์š”์•ฝ

useId๋Š” React์—์„œ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ณ ์œ ํ•œ ID๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๋„๊ตฌ์˜ˆ์š”.
์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ฑฐ๋‚˜ <label>๊ณผ <input>์„ ์—ฐ๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ •๋ง ํŽธ๋ฆฌํ•ด์š”!

728x90
๋ฐ˜์‘ํ˜•

'web > react hook' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

useInsertionEffect  (0) 2024.12.14
useImperativeHandle  (0) 2024.12.14
useEffect  (1) 2024.12.14
useDeferredValue  (0) 2024.12.14
useDebugValue  (0) 2024.12.14
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/01   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ
๋ฐ˜์‘ํ˜•
250x250