본문 바로가기

클라이언트/React
[리액트(React)] 조건부 렌더링(Conditional Rendering)

// 조건부 렌더링, 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