조건부 렌더링이란, 특정 조건에 따라 다른 결과물을 렌더링 하는 것을 의미합니다.
예를 들어서, App 컴포넌트에서 Hello 컴포넌트를 사용 할 때, isSpecila
이라는 props를 설정하보겠습니다.
App.js
import React from 'react';
import Hello from './Hello';
import Wrapper from './Wrapper';
function App() {
return (
<Wrapper>
<Hello name="react" color="red" isSpecial={true}/>
<Hello color="pink" />
</Wrapper>
)
}
export default App;
true
는 자바스크립트 값이기 때문에 중괄호로 감싸주어야 합니다.
그리고, Hello 컴포넌트에서는 isSpecial 이 true
이냐 false
이냐에 따라서 컴포넌트의 좌측에 * 표시를 보여줘보겠습니다.
이를 처리하는 가장 기본적인 방법은, 삼항연산자를 사용하는 것 입니다.
Hello.js
import React from 'react';
function Hello({ color, name, isSpecial }) {
return (
<div style={{ color }}>
{ isSpecial ? <b>*</b> : null }
안녕하세요 {name}
</div>
);
}
Hello.defaultProps = {
name: '이름없음'
}
export default Hello;
참고로 JSX 에서 null, false, undefined 를 렌더링하게 된다면 아무것도 나타나지 않게 됩니다.
컴포넌트의 props 값을 설정하게 될 때 만약 props 이름만 작성하고 값 설정을 생략한다면, 이를 true 로 설정한 것으로 간주합니다.