[React] Conditional statement

yeonddoriยท2023๋…„ 9์›” 18์ผ
0

AID_WEB

๋ชฉ๋ก ๋ณด๊ธฐ
9/10

๐Ÿ“ Conditional statement

JSX๋ฅผ ์ด์šฉํ•˜์—ฌ html์„ ์ž‘์„ฑ ์‹œ ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋”ฐ๋ผ์„œ coding apple ๊ฐ•์ขŒ๋ฅผ ํ†ตํ•ด React์—์„œ ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์–ด๋–ค ๊ฒƒ๋“ค์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์•˜๋‹ค.

1. if / else

function Component() {
  if ( true ) {
    return <p>์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ด๋ฉด ๋ณด์—ฌ์ค„ HTML</p>;
  } else {
    return null;
  }
} 

์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ด์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ if๋ฌธ์€ return() ์•ˆ, ์ฆ‰ JSX ๋‚ด์—์„œ๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฆ‰, <div> if (condition) {statement} </div> ์ด๋Ÿฐ ํ‘œํ˜„์ด ๊ธˆ์ง€๋œ๋‹ค.
๊ทธ๋ž˜์„œ ๋ณดํ†ต return + JSX ์ „์ฒด๋ฅผ ๋ฑ‰๋Š” if๋ฌธ์„ ์‚ฌ์šฉํ•œ๋‹ค.

2. ์‚ผํ•ญ์—ฐ์‚ฐ์ž (ternary operator)

function Component() {
  return (
    <div>
      {
        1 === 1
        ? <p>์ฐธ์ด๋ฉด ๋ณด์—ฌ์ค„ HTML</p>
        : null
      }
    </div>
  )
} 

์‚ผํ•ญ์—ฐ์‚ฐ์ž๋Š” ์กฐ๊ฑด๋ฌธ ? ์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ผ๋•Œ ์‹คํ–‰ํ•  ์ฝ”๋“œ : ๊ฑฐ์ง“์ผ ๋•Œ ์‹คํ–‰ํ•  ์ฝ”๋“œ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
JSX ๋‚ด์—์„œ if/else ๋Œ€์‹  ์“ธ ์ˆ˜ ์žˆ๋‹ค๋Š”๊ฒŒ ์žฅ์ ์ด๋ฉฐ ์กฐ๊ฑด์„ ๊ฐ„๋‹จํžˆ ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

function Component() {
  return (
    <div>
      {
        1 === 1
        ? <p>1 === 1 ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด ๋ณด์—ฌ์ค„ HTML</p>
        : ( 2 === 2 
            ? <p>1 === 1 ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ด๋ฉด์„œ 2 === 2 ์กฐ๊ฑด์ด ์ฐธ์ด๋ฉด ๋ณด์—ฌ์ค„ HTML</p> 
            : <p>1 === 1 ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ด๋ฉด์„œ 2 === 2 ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ด๋ฉด ๋ณด์—ฌ์ค„ HTML</p> 
          )
      }
    </div>
  )
} 

๋˜ํ•œ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋Š” ์ด์™€ ๊ฐ™์ด ์ค‘์ฒฉ ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅํ•˜๋‚˜, ๋‚˜์ค‘์— ์ฝ์—ˆ์„ ๋•Œ ๋˜๋Š” ๋‚จ์ด ์ฝ์—ˆ์„ ๋•Œ ์ดํ•ดํ•˜๊ธฐ ํž˜๋“  ์ฝ”๋“œ๋Š” ์ข‹์ง€ ์•Š์œผ๋ฏ€๋กœ ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š”๋‹ค.

3. && ์—ฐ์‚ฐ์ž

function Component() {
  return (
    <div>
      { 1 === 1 && <p>์ฐธ์ด๋ฉด ๋ณด์—ฌ์ค„ HTML</p> }
    </div>
  )
}

&& ์—ฐ์‚ฐ์ž๋Š” ์ขŒ์ธก ์กฐ๊ฑด๋ฌธ์ด true์ด๋ฉด ์šฐ์ธก JSX๊ฐ€ ๊ทธ ์ž๋ฆฌ์— ๋‚จ๊ฒŒ ๋œ๋‹ค. ์ขŒ์ธก ์กฐ๊ฑด๋ฌธ์ด false์ด๋ฉด false๊ฐ€ ๋‚จ๊ธฐ ๋•Œ๋ฌธ์— HTML๋กœ ๋ Œ๋”๋งํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋ณ€์ˆ˜๊ฐ€ ์ฐธ์ด๋ฉด <p></p>๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ฐธ์ด ์•„๋‹ˆ๋ฉด null์„ ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์ž์ฃผ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ ์กฐ๊ฑด๋ฌธ์ด๋‹ค.

&& ์—ฐ์‚ฐ์ž
์ขŒ์šฐ ์กฐ๊ฑด๋ฌธ์ด ๋ชจ๋‘ true๋ฉด ์ „์ฒด๋ฅผ true๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค.
์ด๋•Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” && ๊ธฐํ˜ธ๋กœ ๋น„๊ตํ•  ๋•Œ true์™€ false๋ฅผ ๋„ฃ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ž๋ฃŒํ˜•์„ ๋„ฃ๊ฒŒ ๋˜๋ฉด

true && '์•ˆ๋…•';
false && '์•ˆ๋…•';
true && false && '์•ˆ๋…•';

๋งจ ์œ— ์ฝ”๋“œ๋Š” '์•ˆ๋…•'์ด ๋‚จ๊ณ  ์ค‘๊ฐ„ ์ฝ”๋“œ๋Š” false, ๋งจ ์•„๋ž˜ ์ฝ”๋“œ๋Š” false๊ฐ€ ๋‚จ๊ฒŒ ๋œ๋‹ค.


4. switch / case

function Component2(){
  var user = 'seller';
  if (user === 'seller'){
    return <h4>ํŒ๋งค์ž ๋กœ๊ทธ์ธ</h4>
  } else if (user === 'customer'){
    return <h4>๊ตฌ๋งค์ž ๋กœ๊ทธ์ธ</h4>
  } else {
    return <h4>๊ทธ๋ƒฅ ๋กœ๊ทธ์ธ</h4>
  }
}

if๋ฌธ์„ ์ด๋ ‡๊ฒŒ ์—ฐ๋‹ฌ์•„ ์—ฌ๋Ÿฌ ๊ฐœ ์จ์•ผ๋˜๋Š” ์ƒํ™ฉ๋“ค์ด ์žˆ์„ ๋•Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ switch ๋ฌธ๋ฒ•์„ ์ด์šฉํ•˜๋ฉด ๊ด„ํ˜ธ๋ฅผ ์กฐ๊ธˆ ๋” ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

function Component2(){
  var user = 'seller';
  switch (user){
    case 'seller' :
      return <h4>ํŒ๋งค์ž ๋กœ๊ทธ์ธ</h4>
    case 'customer' :
      return <h4>๊ตฌ๋งค์ž ๋กœ๊ทธ์ธ</h4>
    default : 
      return <h4>๊ทธ๋ƒฅ ๋กœ๊ทธ์ธ</h4>
  }
}

์ด์™€ ๊ฐ™์ด switch ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์žฅ์ ์€ if๋ฌธ์„ ์—ฐ๋‹ฌ์•„์“ฐ๋Š” ๋Œ€์‹  ์ค„์–ด๋“  ์ฝ”๋“œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์กฐ๊ฑด๋ฌธ์—์„œ ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜๋งŒ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋‹จ์ ์ด๋‹ค.

switch ๋ฌธ๋ฒ•
1. switch (condition) {statement} ํ˜•์‹
2. {statement} ์•ˆ์— case ์กฐ๊ฑดํŒ๋‹จ :์„ ๋„ฃ์–ด์ค€๋‹ค.
3. case ์กฐ๊ฑด ํŒ๋‹จ :์ด ์ฐธ์ด๋ฉด ๋ฐ”๋กœ ์•„๋ž˜์— ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
4. default :๋Š” ๋งจ ๋งˆ์ง€๋ง‰์— ์“ฐ๋Š” else๋ฌธ๊ณผ ๋™์ผํ•˜๋‹ค.


5. enum

์˜ˆ๋ฅผ ๋“ค์–ด ์‡ผํ•‘๋ชฐ์„ ์ œ์ž‘ํ•œ๋‹ค๊ณ  ํ•  ๋•Œ, ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ ์ƒํ’ˆ์ •๋ณด, ๋ฐฐ์†ก์ •๋ณด, ํ™˜๋ถˆ์•ฝ๊ด€ ๋“ฑ์˜ ๋‚ด์šฉ์„ ๋ณด์—ฌ์ค˜์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

ํ˜„์žฌ state๊ฐ€ info๋ฉด <p>์ƒํ’ˆ์ •๋ณด</p>
ํ˜„์žฌ state๊ฐ€ shipping์ด๋ฉด <p>๋ฐฐ์†ก์ •๋ณด</p>
ํ˜„์žฌ state๊ฐ€ refund๋ฉด <p>ํ™˜๋ถˆ์•ฝ๊ด€</p>

์ด๋Ÿฐ ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ์ผ๋‹จ state๋ฅผ ๋งŒ๋“ค์–ด๋†“๊ณ  if๋ฌธ์œผ๋กœ state๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฌธ๋ฒ•์„ ์จ์•ผํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ, ์ด๋ฒˆ์—” if๋ฌธ์ด ์•„๋‹ˆ๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ object ์ž๋ฃŒํ˜•์— ๋‚ด๊ฐ€ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์€ HTML์„ ๋‹ค ๋‹ด๋Š”๋‹ค.

function Component() {
  var current_state = 'info';
  return (
    <div>
      {
        { 
           info : <p>์ƒํ’ˆ์ •๋ณด</p>,
           shipping : <p>๋ฐฐ์†ก๊ด€๋ จ</p>,
           refund : <p>ํ™˜๋ถˆ์•ฝ๊ด€</p>
        }[current_state]
      }

    </div>
  )
} 

JSX ์ƒ์—์„œ html ํƒœ๊ทธ๋“ค์€ ์ €๋ ‡๊ฒŒ object์— ๋‹ด๋“ , array์— ๋‹ด๋“  ์•„๋ฌด ์ƒ๊ด€์ด ์—†๋‹ค. ์ด๋ ‡๊ฒŒ object ์ž๋ฃŒํ˜•์œผ๋กœ HTML์„ ๋‹ค ์ •๋ฆฌํ•ด์„œ ๋‹ด์€ ๋‹ค์Œ ๋งˆ์ง€๋ง‰์— object{} ๋’ค์— [] ๋Œ€๊ด„ํ˜ธ๋ฅผ ๋ถ™์—ฌ key๊ฐ’์ด current_state์ธ ์ž๋ฃŒ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿผ ์ด์ œ current_state๋ผ๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์— ๋”ฐ๋ผ์„œ ์›ํ•˜๋Š” HTML์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.
๋งŒ์•ฝ์— current_state๊ฐ€ 'info'๋ฉด info ํ•ญ๋ชฉ์— ์ €์žฅ๋œ <p>์ƒํ’ˆ์ •๋ณด</p>๊ฐ€ ๋ณด์—ฌ์งˆ ๊ฒƒ์ด๊ณ , current_state๊ฐ€ 'refund'๋ฉด refund ํ•ญ๋ชฉ์— ์ €์žฅ๋œ <p>ํ™˜๋ถˆ์•ฝ๊ด€</p>๊ฐ€ ๋ณด์—ฌ์ง€๋Š” ๊ฒƒ์ด๋‹ค.


๐Ÿช„ ๋งˆ์น˜๋ฉด์„œ

JSX์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์กฐ๊ฑด๋ฌธ๋„ ๋‹ค๋ฅธ ์–ธ์–ด๋“ค๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๊ธฐ๋ณธ์ ์ธ ์กฐ๊ฑด๋ฌธ์ด ๋งŽ์•„์„œ ํŽธํ•˜๊ฒŒ ๊ณต๋ถ€ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๋‹ค๋งŒ ์ฃผ์˜ํ•  ์ ์ด ์žˆ๋‹ค๋ฉด if/else์˜ ๊ฒฝ์šฐ return() ์•ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ๋งŒ ์กฐ์‹ฌํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€