[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 β†’ λ Œλ”λ§ 과정을 μ‹œκ°ν™”ν•œ νλ¦„λ„μž…λ‹ˆλ‹€: