[React] IX. Conditional Rendering
조건에 따라 다른 렌더링을 수행하는 것.
조건문을 통해 다른 렌더링을 구현함.
function Greeting(props) {
const isLoggedIn = props.isLoggedIn;
if(isLoggedIn) {
return <UserGreeting />;
}
return <GuestGreeting />;
}
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)
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>
}
}
조건문을 코드 안에 집어넣는 것.
아래는 사용례.
function Counter(props) {
const count = 0;
return (
<div>
{count && <h1>현재 카운트 : {count} </h1>}
//
</div>
);
삼항 연산자.
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>
);
}