-
[React] 조건부 렌더링 시 "falsy" 값 렌더링 주의React 2022. 6. 28. 15:44
문제
api로 배열 데이터를 받아와 화면에 뿌려주는 작업 중 화면에 0이 출력되어 찾아보았다.
원인
<div> {props.messages.length && <MessageList messages={props.messages} /> } </div>
한 가지 주의해야 할 점은 0과 같은 “falsy” 값들은 React가 렌더링 한다는 점입니다.
예를 들어, 아래의 예시는 props.messages가 빈 배열일 때 예상과는 다르게 0을 출력하게 됩니다.props.messages.length가 0이면 "falsy" 값이 나오니 조건부 렌더링을 이용하면 되겠다! 라는 생각이지만
리액트는 그 값을 렌더링한다고 한다. 그래서 0이 출력하게 되었다.
“falsy” 값 : boolean 문맥에서 false로 평가되는 값
false 키워드 false 0 숫자 zero -0 음수 zero 0n Bigint. 불리언으로 사용될 경우, 숫자와 같은 규칙을 따름. 0n은 거짓 같은 값. "" 빈 string null null - 아무런 값도 없음 undefined undefined- 원시값 NaN NaN - 숫자가 아님 해결
<div> {props.messages.length > 0 && <MessageList messages={props.messages} /> } </div>
&& 앞의 표현식이 언제나 진리값(true, false)이 되도록 만든다.
반응형'React' 카테고리의 다른 글
[React] 코드 분할과 React.lazy (0) 2022.08.11 [React] React에서 setInterval 사용 (0) 2022.07.22 [React] 제어/비제어 컴포넌트 (0) 2022.07.10 [React] Intersection Observer API : 무한 스크롤 구현 (0) 2022.07.03 [React] TypeError: Array.map is not a function (0) 2022.06.14