Skip to main content

9. Conditional Rendering

[React] IX. Conditional Rendering

컨디셔널 렌더링

조건에 따라 다른 렌더링을 수행하는 것. 조건문을 통해 다른 렌더링을 구현함.

function Greeting(props) {
const isLoggedIn = props.isLoggedIn;

if(isLoggedIn) {
return <UserGreeting />;
}
return <GuestGreeting />;
}

JS 의 Truthy, Falsy

truthy : true 는 아니지만 true로 여겨지는 값.

truthy :
true
{}(빈 객체)
[](빈 배열)
1(nonzero 숫자)
"0","false"(nonempty string)

falsy : false 는 아니지만 false로 여겨지는 값.

falsy :
false
0, -0 (zeros)
On (BigInt zero)
"", '', `` (empty string)
null
undefined
NaN (Not a Number)

element variable

하나의 엘리먼트를 변수에 저장해서 사용하는 것. 아래 예시에서 {button}이 이에 해당.

function LoginButton(props) {
return (
<button onClick={props.onClick}>
로그인
</button>
);
}

function LogoutButton(props) {
return (
<button onClick={props.onClick}>
로그아웃
</button>
);
}

function LoginControl(props) {
const [isLoggedIn, setIsLoggedIn] = useState(false);

const handleLoginClick = () =>{
setIsLoggedIn(true);
}

const handloeLogoutClick = ()=> {
setIsLoggedIn(false);
}

let button;
if (isLoggedIn) {
button = <LogoutButton onClick={handleLogoutClick}/>;
} else {
button = <LoginButton onClick={handleLoginClick}/>
}

return {
<div>
<Greeting isLoggedIn = {isLoggedIn}/>
{button}
</div>
}
}

inline conditions

조건문을 코드 안에 집어넣는 것.

1) &&

short circuit evaluation 이 일어남. (조건1) && (조건2) 에서 조건1이 false이면, 나머지 계산하지 않고 바로 전체 false라고 판단함.

아래는 사용례.

function Counter(props) {
const count = 0;

return (
<div>
{count && <h1>현재 카운트 : {count} </h1>}
//
</div>
);

2) ? :

삼항 연산자.

function LoginControl(props) {
const [isLoggedIn, setIsLoggedIn] = useState(false);

return (
(isLoggedIn)?<LogoutButton/>:<LoginButton />
);
}

렌더링 막는 방법

function component가 null 을 리턴하면 렌더링 되지 않음.

function WarningBanner(props) {
if(!props.warning) {
return null;
}

return (
<div>경고!</div>
);
}