// 조건부 렌더링, Conditional Rendering
- 조건부 렌더링
- 조건(조건문)에 따라 일부 컴포넌트만 렌더링할 수 있다.
- {} 안에 && 연산자나 삼항 연산자를 활용하여 조건부 렌더링을 할 수 있다.
// && 연산자 사용
{!selectedTopic && <p>Please select a topic.</p>}
{selectedTopic && (
<div id="tab-content">
<h3>{EXAMPLES[selectedTopic].title}</h3>
<p>{EXAMPLES[selectedTopic].description}</p>
<pre>
<code>{EXAMPLES[selectedTopic].code}</code>
</pre>
</div>
)}
//삼항 연산자 사용
{!selectedTopic ? (
<p>Please select a topic.</p>
) : (
<div id="tab-content">
<h3>{EXAMPLES[selectedTopic].title}</h3>
<p>{EXAMPLES[selectedTopic].description}</p>
<pre>
<code>{EXAMPLES[selectedTopic].code}</code>
</pre>
</div>
)}
- return 하기 전에 조건문을 미리 작성하여 변수의 값을 update하면 return값을 간단하게 작성할 수 있다.
function App() {
let tabContent = <p>Please select a topic.</p>;
if (selectedTopic) {
tabContent = (
<div id="tab-content">
<h3>{EXAMPLES[selectedTopic].title}</h3>
<p>{EXAMPLES[selectedTopic].description}</p>
<pre>
<code>{EXAMPLES[selectedTopic].code}</code>
</pre>
</div>
);
}
return (
{tabContent}
);
}
import React from 'react';
const styles = {
wrapper: {
padding: 16,
display: 'flex',
flexDirection: 'row',
borderBottom: '1px solid grey',
},
greeting: {
marginRight: 8,
},
};
function Toolbar(props) {
const { isLoggedIn, onClickLogin, onClickLogout } = props;
return (
<div style={styles.wrapper}>
{isLoggedIn && <span style={styles.greeting}>안녕하세요</span>}
{isLoggedIn ? (
<button onClick={onClickLogout}>로그아웃</button>
) : (
<button onClick={onClickLogin}>로그인</button>
)}
</div>
);
}
export default Toolbar;
import React, { useState } from 'react';
import Toolbar from './Toolbar';
function LandingPage(props) {
const [isLoggedIn, setIsLoggedIn] = useState(false);
const onClickLogin = () => {
setIsLoggedIn(true);
};
const onClickLogout = () => {
setIsLoggedIn(false);
};
return (
<div>
<Toolbar
isLoggedIn={isLoggedIn}
onClickLogin={onClickLogin}
onClickLogout={onClickLogout}
/>
<div style={{ padding: 16 }}>본문</div>
</div>
);
}
export default LandingPage;
'클라이언트 > React' 카테고리의 다른 글
[리액트(React)] Form (0) | 2024.01.06 |
---|---|
[리액트(React)] 리스트(List) (0) | 2024.01.06 |
[리액트(React)] 이벤트 핸들러 (0) | 2024.01.04 |
[리액트(React)] Hook (2) | 2024.01.03 |
[리액트(React)] State, Lifecycle (0) | 2024.01.02 |