const tabs = ( // 출력x
<ul className="tabs">
{Object.values(TabType).map((tabType) => {
return
<li key={tabType}>
{TabLabel[tabType]}
</li>
})}
</ul>
);
왜 윗처럼 쓰면 출력이 안되고 아래처럼 적어야 되는걸까?
const tabs = ( // 출력 o
<ul className="tabs">
{Object.values(TabType).map((tabType) => {
return <li key={tabType}>{TabLabel[tabType]}</li>
})}
</ul>
);
이 코드에서 문제는 return 문 다음에 오는 <li> 태그가 같은 줄에 있지 않다는 것입니다. JavaScript는 세미콜론을 자동으로 삽입하는 'Automatic Semicolon Insertion' 규칙을 따릅니다. 이 규칙에 따라, JavaScript 엔진은 return 문 다음에 새로운 줄이 시작되면 해당 줄 끝에 세미콜론을 자동으로 삽입합니다. 따라서 첫 번째 코드는 다음과 같이 해석됩니다:
{Object.values(TabType).map((tabType) => {
return; // 여기서 함수가 끝나고 아무것도 반환하지 않습니다.
<li key={tabType}>
{TabLabel[tabType]}
</li>
})}
즉, <li> 요소가 반환되기 전에 함수가 종료되어 아무것도 반환되지 않는 것이다.
'🪁react > react 실습' 카테고리의 다른 글
react 상품 등록 폼 만들기 (0) | 2024.01.12 |
---|---|
현재 branch들 커밋 순서 (0) | 2024.01.12 |
키워드 제거 시, 검색폼 내용도 같이 지우기[제출 키워드를 false로] (0) | 2024.01.03 |
검색폼 삭제기능 구현[버튼을 누르거나, 검색어를 지우면 reset 실행] (0) | 2024.01.02 |
리액트 실행, useState, 리액트 검색폼 구현해보기,리액트 조건부 렌더링 (0) | 2024.01.02 |