함수형 컴포넌트에서 렌더링을 막고 싶다면 'null'을 반환하면 된다.
'null'이 렌더링되지 않는 이유는 JSX로 작성한 코드는
React.createElement()함수 호출로 변환하여 처리하는데
'null'로 반환하면 해당 컴포넌트는 내부적으로 아무런 React요소를 생성하지 않게 된다.
그래서 React.createElement()함수 호출이 이루어지지 않으니 렌더링 대상도 되지 않는다.
function ExComponent({ shouldRender }){
if (!shouldRender) {
return null;
}
return <div>렌더링됨</div>;
}
shouldRender가 false일때 return null이 실행되면
<div>렌더링됨</div>;부분이 생성되지 않는다.
클래스 컴포넌트에서 render()메서드가 null을 반환하는 것은
컴포넌트는 렌더링 되지만 화면에 나타나지는 않는다.
그리고 null을 반환하더라도 다른 라이프사이클 메서드는 여전히 호출될 수 있다.
React의 렌더링 프로세스는 컴포넌트 트리를 순회하면서
가상 DOM을 만들어 실제 DOM에 업데이트를 적용하는 방식으로 동작하는데
클래스 컴포넌트의 'render()'메서드가 호출되면 반환된 결과가
가상 DOM에 반영되고 실제 DOM에도 반영되기 때문에
렌더링은 되는 것이고 null이라 화면에 아무것도 없는 빈 상태가 된다.
'02_STUDY > React' 카테고리의 다른 글
useQuery 쓸 때, Query data cannot be undefined 에러 (0) | 2023.10.16 |
---|---|
[ React ] map() 사용 시 key는 반드시 넣어줘야 하는 권장사항. (0) | 2023.09.16 |
[ React ] 클래스 컴포넌트와 함수형 컴포넌트의 이벤트 핸들러 비교 (0) | 2023.08.28 |
[ React ] 카운트 값을 감소하는 함수, 음수값이 나오지 않도록 만들기 (0) | 2023.08.27 |
[ React ] 리액트 함수형 컴포넌트의 훅 Hook에 대해서 ( useState, useEffect, useContext, useMemo, useCallback, useRef ) (0) | 2023.08.10 |