[React] 🎭 쑰건뢀 λ Œλ”λ§ – λ¦¬μ•‘νŠΈμ—μ„œ 보여쀄지 말지 κ²°μ •ν•˜κΈ°

λ¦¬μ•‘νŠΈλ₯Ό μ“°λ‹€ 보면, 상황에 따라 화면에 보이게 ν•˜κ±°λ‚˜ μˆ¨κ²¨μ•Ό ν•  μš”μ†Œκ°€ 자주 λ“±μž₯ν•©λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄, λ‘œκ·ΈμΈμ„ ν•œ μ‚¬λžŒμ—κ²Œλ§Œ β€œλ‘œκ·Έμ•„μ›ƒβ€ λ²„νŠΌμ„ λ³΄μ—¬μ€€λ‹€κ±°λ‚˜, κ²½κ³  λ©”μ‹œμ§€λ₯Ό 쑰건에 따라 ν‘œμ‹œν•˜λŠ” 경우죠.

이럴 λ•Œ μ‚¬μš©ν•˜λŠ” 것이 쑰건뢀 λ Œλ”λ§μž…λ‹ˆλ‹€.


1. βœ… κ°€μž₯ 기본적인 방법 – ifλ¬Έ

JSX λ°–μ—μ„œ 쑰건을 κ²€μ‚¬ν•œ λ’€, μ›ν•˜λŠ” UIλ₯Ό 리턴할 수 μžˆμ–΄μš”.

function WelcomeMessage({ isLoggedIn }) {
  if (isLoggedIn) {
    return <p>ν™˜μ˜ν•©λ‹ˆλ‹€!</p>;
  } else {
    return <p>둜그인 ν•΄μ£Όμ„Έμš”.</p>;
  }
}

단점은 κ°„λ‹¨ν•œ 쑰건이라도 μ½”λ“œκ°€ κΈΈμ–΄μ§„λ‹€λŠ” μ μž…λ‹ˆλ‹€.


2. πŸ’‘ JSX μ•ˆμ—μ„œλŠ” μ‚Όν•­ μ—°μ‚°μž μ‚¬μš©

JSX μ•ˆμ—μ„œλŠ” {쑰건 ? A : B} ν˜•νƒœλ‘œ κ°„κ²°ν•˜κ²Œ μ“Έ 수 μžˆμ–΄μš”.

function WelcomeMessage({ isLoggedIn }) {
  return (
    <p>{isLoggedIn ? 'ν™˜μ˜ν•©λ‹ˆλ‹€!' : '둜그인 ν•΄μ£Όμ„Έμš”.'}</p>
  );
}

πŸ‘‰ μ‚Όν•­ μ—°μ‚°μžλŠ” **쑰건에 따라 두 κ°€μ§€ 경우λ₯Ό λ‚˜λˆŒ λ•Œ** μ“°λ©΄ μ’‹μŠ΅λ‹ˆλ‹€.


3. πŸ™†β€β™€οΈ νŠΉμ • 쑰건일 λ•Œλ§Œ ν‘œμ‹œ – && μ—°μ‚°μž

쑰건이 참일 λ•Œλ§Œ μ–΄λ–€ μš”μ†Œλ₯Ό 보여주고, 거짓이면 아무것도 μ•ˆ 보이게 ν•˜κ³  싢을 땐 && μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

function Alert({ show }) {
  return (
    <div>
      {show && <p style={{ color: 'red' }}>κ²½κ³ : 잘λͺ»λœ μ ‘κ·Όμž…λ‹ˆλ‹€.</p>}
    </div>
  );
}

βœ… showκ°€ false일 κ²½μš°μ—λŠ” 아무것도 λ Œλ”λ§λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.


πŸ“Œ 정리

  • if문은 JSX λ°”κΉ₯μ—μ„œ 쑰건 λΆ„κΈ°λ₯Ό ν•  λ•Œ μ‚¬μš©
  • μ‚Όν•­ μ—°μ‚°μž ?:λŠ” κ°„λ‹¨ν•œ 두 갈래 λΆ„κΈ°λ₯Ό JSX μ•ˆμ—μ„œ μ²˜λ¦¬ν•  λ•Œ 유용
  • && μ—°μ‚°μžλŠ” νŠΉμ • 쑰건이 참일 λ•Œλ§Œ μš”μ†Œλ₯Ό 보여주고 싢을 λ•Œ μ‚¬μš©

πŸ’‘ μΆ”κ°€ 팁

  • 쑰건이 λ³΅μž‘ν•΄μ§€λ©΄ μ»΄ν¬λ„ŒνŠΈλ₯Ό λ‚˜λˆ„λŠ” 것이 더 κΉ”λ”ν•΄μš”
  • null을 λ°˜ν™˜ν•˜λ©΄ 아무것도 ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ (λ Œλ”λ§ μƒλž΅)

πŸ–ΌοΈ 쑰건뢀 λ Œλ”λ§ 흐름도

λ‹€μŒ 그림은 쑰건에 따라 화면에 λ³΄μ΄λŠ” μ»΄ν¬λ„ŒνŠΈκ°€ μ–΄λ–»κ²Œ λ‹¬λΌμ§€λŠ”μ§€λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€: