리스트 렌더링

집합(배열) 데이터 순환

데이터 타입이 리스트(일반적으로 Array 객체를 말함)인 경우, 반복(Loop) 처리를 통해 JSX 코드를 동적으로 생성 할 수 있습니다. 아래 예시는 Array 객체의 map 메서드를 사용해 배열을 순환 처리하여 React 요소를 만들어 낸 후, 컨테이너 역할의 React 요소의 자식 요소로 설정합니다.

const reactFamily = [
  { id: 'go1qhwkay', name: 'React' },
  { id: 'jdkw8wjbk', name: 'Redux' },
  { id: 'ekjkfdcj4o', name: 'React Router' },
]

const reactFamilyJSX = (
  <ul className="react-family">
    {reactFamily.map(member => (
      <li className="react-family__member">{member.name}</li>
    ))}
  </ul>
)

어라? 오류가 발생하는데요?

조건에 따른 리스트 렌더링

조건에 따라 리스트 렌더링을 수행하거나, 수행하지 않도록 프로그래밍 할 수 있습니다.

const reactFamily = [
  { id: 'go1qhwkay', name: 'React' },
  { id: 'jdkw8wjbk', name: 'Redux' },
  { id: 'ekjkfdcj4o', name: 'React Router' },
]

const ReactFamilyJSX =
  // 조건 식
  reactFamily.length > 0 ? 
    (
      // 조건이 참인 경우
      <ul className="react-family">
        {reactFamily.map(member => (
          <li className="react-family__member">{member.name}</li>
        ))}
      </ul>
    ) : 
    (
      // 조건이 거짓인 경우
      <p>공부 할 React 패밀리가 없습니다.</p>
    )

함수를 사용해 코드를 묶어 재사용 할 수 있도록 할 수 있고, 함수에서는 '식' 대신 '문'을 사용해 결과 값을 반환하도록 구성할 수도 있습니다.

function renderReactFamily(items) {
  // 조건 문
  if (items.length > 0) {
    return (
      <ul className="react-family">
        {items.map(item => (
          <li className="react-family__member">{item.name}</li>
        ))}
      </ul>
    )
  } else {
    return <p>공부 할 React 패밀리가 없습니다.</p>
  }
}


const ReactFamilyJSX = renderReactFamily(reactFamily)

Vue의 리스트 렌더링

Last updated

Was this helpful?