React 에서는 데이터 컬렉션에서 여러 개의 유사한 컴포넌트를 표시해야 하는 경우가 많습니다. JavaScript 의 map()과 같은 배열 메서드를 사용하여 데이터 배열을 조작하고 JSX 요소 배열로 변환할 수 있습니다.
"key"는 요소 목록을 생성할 때 포함해야 하는 특별한 문자열 속성입니다. key 는 React 가 어떤 항목이 변경되었는지, 추가되었는지 또는 제거되었는지를 식별하는 데 도움이 됩니다. 이를 통해 React 는 사용자 인터페이스를 효율적으로 업데이트할 수 있습니다.
이 랩에서는 데이터 배열을 가져와 컴포넌트 목록으로 변환하고 렌더링하는 방법을 배우고, key prop 의 중요한 역할도 이해하게 됩니다.
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 95%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.
컴포넌트 내 아이템 배열 생성
이 단계에서는 목록으로 표시하려는 데이터를 정의하는 것부터 시작합니다. 대부분의 애플리케이션에서는 이 데이터가 API 또는 데이터베이스에서 오겠지만, 이 랩에서는 컴포넌트 내에서 직접 간단한 배열을 정의할 것입니다.
먼저 올바른 디렉토리에 있는지 확인하십시오. React 애플리케이션 my-app은 /home/labex/project 디렉토리에 생성되었습니다.
WebIDE 왼쪽의 파일 탐색기를 사용하여 my-app/src/App.jsx 파일을 엽니다.
App 컴포넌트 함수 내에서 return 문 앞에 문자열 배열이 될 products라는 상수를 정의합니다.
마지막으로 개발 서버를 시작합니다. --host 및 --port 플래그는 LabEx 환경 내에서 애플리케이션에 액세스할 수 있도록 하는 데 필요합니다.
npm run dev -- --host 0.0.0.0 --port 8080
서버가 시작된 후 LabEx 인터페이스의 Web 8080 탭으로 전환하십시오. 제품 목록이 표시될 것입니다. 그러나 브라우저의 개발자 콘솔을 열면 (마우스 오른쪽 클릭 -> 검사 -> 콘솔) 다음과 같은 경고가 표시됩니다: Warning: Each child in a list should have a unique "key" prop. 다음 단계에서 이 문제를 해결할 것입니다.
각 리스트 항목에 고유한 key prop 할당
이 단계에서는 각 목록 항목에 고유한 key를 제공하여 콘솔 경고를 수정합니다. 키는 React 가 각 항목의 식별자를 추적하는 데 중요하며, 데이터가 변경될 때 목록을 효율적으로 다시 렌더링하는 데 도움이 됩니다.
키를 선택하는 가장 좋은 방법은 형제 항목 중에서 목록 항목을 고유하게 식별하는 문자열을 사용하는 것입니다. 대부분의 경우 데이터의 ID 를 사용하게 됩니다.
데이터를 각 객체에 고유한 id가 있는 객체 배열로 수정해 보겠습니다. src/App.jsx를 다음과 같이 업데이트합니다. 각 제품의 id를 키로 사용할 것입니다.
파일을 저장한 후 Web 8080 탭과 개발자 콘솔을 다시 확인하십시오. 목록은 이전과 같이 렌더링되어야 하지만, 키 누락에 대한 경고는 사라졌을 것입니다.
중요 참고 사항: 항목 순서가 변경될 수 있는 경우 인덱스를 키로 사용하는 것은 권장되지 않습니다. 이는 성능에 부정적인 영향을 미치고 컴포넌트 상태에 문제를 일으킬 수 있습니다. 목록에서 항목을 정렬, 추가 또는 제거하면 인덱스가 변경되어 React 의 렌더링 알고리즘을 혼란스럽게 할 수 있습니다. 목록이 정적이고 순서가 변경되지 않는 경우에만 사용하십시오.
ul 또는 ol 태그 안에 매핑된 리스트 렌더링
이 단계에서는 목록 항목을 <ul> (순서 없는 목록) 또는 <ol> (순서 있는 목록) 태그로 감싸게 됩니다. 이는 접근성 및 SEO 에 좋은 의미론적으로 올바른 HTML 을 만드는 데 중요합니다.
현재 프래그먼트 (<>...</>) 안에 일련의 <li> 요소를 직접 렌더링하고 있습니다. listItems 변수를 <ul> 태그로 감싸서 올바른 순서 없는 목록을 만들어 보겠습니다.