[React] ๐Ÿ“‹ React์—์„œ ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๊ธฐ โ€“ ๋ฆฌ์ŠคํŠธ ๋ Œ๋”๋ง

์‚ฌ์šฉ์ž ๋ชฉ๋ก, ๋Œ“๊ธ€ ๋ชฉ๋ก, ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•ญ๋ชฉ์„ ๋ฐ˜๋ณตํ•ด์„œ ํ™”๋ฉด์— ๋ณด์—ฌ์ค˜์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, React์—์„œ๋Š” map() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ JSX๋ฅผ ๋ฐ˜๋ณต ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ฆฌ์ŠคํŠธ ๋ Œ๋”๋ง์˜ ๊ธฐ๋ณธ๊ณผ ํ•จ๊ป˜, ๊ผญ ํ•„์š”ํ•œ key ์†์„ฑ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.


1. ๐ŸŒ€ ๋ฐฐ์—ด์„ JSX๋กœ ๋ฐ”๊พธ๊ธฐ โ€“ map() ํ•จ์ˆ˜

JS์˜ map() ํ•จ์ˆ˜๋Š” ๋ฐฐ์—ด์„ ๋ฐ˜๋ณตํ•ด ๊ฐ๊ฐ์˜ ์š”์†Œ๋ฅผ ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.

const fruits = ['์‚ฌ๊ณผ', '๋ฐ”๋‚˜๋‚˜', '๋”ธ๊ธฐ'];

function FruitList() {
  return (
    <ul>
      {fruits.map((fruit) => (
        <li>{fruit}</li>
      ))}
    </ul>
  );
}

์œ„ ์ฝ”๋“œ์—์„œ fruits ๋ฐฐ์—ด์˜ ์š”์†Œ๋“ค์„ <li> ํƒœ๊ทธ๋กœ ๋ฐ˜๋ณต ์ถœ๋ ฅํ•˜๊ณ  ์žˆ์–ด์š”.


2. โš ๏ธ key ์†์„ฑ์€ ๊ผญ ๋„ฃ์ž!

React๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ Œ๋”๋งํ•  ๋•Œ ๊ฐ ํ•ญ๋ชฉ์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด key๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. key๊ฐ€ ์—†๊ฑฐ๋‚˜ ์ค‘๋ณต๋˜๋ฉด ์„ฑ๋Šฅ ์ €ํ•˜๋‚˜ UI ๋ฌธ์ œ(์˜ˆ: ๊นœ๋นก์ž„)๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์–ด์š”.

์œ„ ์˜ˆ์ œ๋ฅผ ๊ฐœ์„ ํ•ด๋ณผ๊ฒŒ์š”:

{fruits.map((fruit, index) => (
  <li key={index}>{fruit}</li>
))}

๐Ÿ“Œ ์—ฌ๊ธฐ์„  index๋ฅผ key๋กœ ์ผ์ง€๋งŒ, ๊ฐ€๋Šฅํ•˜๋ฉด ๊ณ ์œ ํ•œ ๊ฐ’(์˜ˆ: id)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค.


3. ๐Ÿงช ๊ณ ์œ  ID๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ

const users = [
  { id: 1, name: '์ฒ ์ˆ˜' },
  { id: 2, name: '์˜ํฌ' }
];

function UserList() {
  return (
    <ul>
      {users.map(user => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

key={user.id}๋Š” ์ตœ์ ์˜ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ํ•ญ๋ชฉ์ด ๋ณ€ํ•ด๋„ ์œ ์ง€๋˜๊ธฐ ๋•Œ๋ฌธ์ด์ฃ .


๐Ÿ“Œ ์ •๋ฆฌ

  • React์—์„œ ๋ฐฐ์—ด์„ ์ถœ๋ ฅํ•  ๋• map()์„ ์‚ฌ์šฉํ•ด ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค
  • key๋Š” ํ•„์ˆ˜์ด๋ฉฐ, ๊ฐ ํ•ญ๋ชฉ์„ ๊ณ ์œ ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค
  • ๊ฐ€๋Šฅํ•˜๋ฉด index ๋Œ€์‹  ๊ณ ์œ ํ•œ id๋ฅผ key๋กœ ์‚ฌ์šฉํ•˜์„ธ์š”

๐Ÿ–ผ๏ธ ๋ฆฌ์ŠคํŠธ ๋ Œ๋”๋ง ํ๋ฆ„๋„

์•„๋ž˜ ๊ทธ๋ฆผ์€ ๋ฐฐ์—ด โ†’ ๋ฐ˜๋ณต โ†’ JSX โ†’ ๋ Œ๋”๋ง ๊ณผ์ •์„ ์‹œ๊ฐํ™”ํ•œ ํ๋ฆ„๋„์ž…๋‹ˆ๋‹ค: