Frontend ๐Ÿ“š/React

[์ฝ”๋”ฉ์• ํ”Œ] ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ Part7 - ๋ฆฌ์•กํŠธ์—์„œ ์ž์ฃผ ์“ฐ๋Š” if๋ฌธ ์ž‘์„ฑ ํŒจํ„ด

leejaejae 2023. 10. 23. 21:03

1๏ธโƒฃ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ์“ฐ๋Š” if/else

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

// ๋˜๋Š”, ์•„๋ž˜์™€ ๊ฐ™์ด ์“ฐ๋ฉด else ์ƒ๋žต ๊ฐ€๋Šฅ
function Component() {
  if ( true ) {
    return <p>์ฐธ์ด๋ฉด ๋ณด์—ฌ์ค„ HTML</p>;
  } 
  return null;
}

- return + JSX ์ „์ฒด๋ฅผ ๋ฑ‰๋Š” if๋ฌธ

 

2๏ธโƒฃ JSX ์•ˆ์—์„œ ์“ฐ๋Š” ์‚ผํ•ญ์—ฐ์‚ฐ์ž

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

// ์•„๋ž˜์™€ ๊ฐ™์ด ์ค‘์ฒฉ ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅ, ํ•˜์ง€๋งŒ ๊ฐ€๋…์„ฑ์ด ์ข‹์ง€ ์•Š๋‹ค.
function Component() {
  return (
    <div>
      {
        1 === 1
        ? <p>์ฐธ์ด๋ฉด ๋ณด์—ฌ์ค„ HTML</p>
        : ( 2 === 2 
            ? <p>์•ˆ๋…•</p> 
            : <p>๋ฐ˜๊ฐ‘</p> 
          )
      }
    </div>
  )
}

- if์™€๋Š” ๋‹ค๋ฅด๊ฒŒ JSX ์•ˆ์—์„œ๋„ ์‹คํ–‰๊ฐ€๋Šฅํ•˜๋ฉฐ ์กฐ๊ฑด์„ ๊ฐ„๋‹จํžˆ ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ

 

3๏ธโƒฃ && ์—ฐ์‚ฐ์ž๋กœ if ์—ญํ•  ๋Œ€์‹ ํ•˜๊ธฐ
! ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์˜ && ์—ฐ์‚ฐ์ž๋ž€ ์™ผ์ชฝ ์˜ค๋ฅธ์ชฝ ๋‘˜๋‹ค true์ด๋ฉด ์ „์ฒด๋ฅผ true๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค.

true && false;  // ๊ฒฐ๊ณผ: false
true && true;  // ๊ฒฐ๊ณผ: true

- ๊ทผ๋ฐ ์ž๋ฐ”์Šคํฌ๋ฆฝใ…‚ํŠธ๋Š” && ๊ธฐํ˜ธ๋กœ ๋น„๊ตํ•  ๋•Œ true์™€ false๋ฅผ ๋„ฃ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ž๋ฃŒํ˜•์„ ๋„ฃ์œผ๋ฉด

true && '์•ˆ๋…•';  // ๊ฒฐ๊ณผ: '์•ˆ๋…•'
false && '์•ˆ๋…•';  // ๊ฒฐ๊ณผ: false
true && false && '์•ˆ๋…•';  // ๊ฒฐ๊ณผ: false

- ์™œ๋ƒ๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” &&๋กœ ์—ฐ๊ฒฐ๋œ ๊ฐ’๋“ค ์ค‘์— ์ฒ˜์Œ ๋“ฑ์žฅํ•˜๋Š” falsy ๊ฐ’์„ ์ฐพ์•„์ฃผ๊ณ  ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ฉด ๋งˆ์ง€๋ง‰๊ฐ’์„ ๋‚จ๊ฒจ์ฃผ๊ธฐ ๋•Œ๋ฌธ

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

// ์œ„์™€ ๊ฐ™์€ ์—ญํ• 

function Component() {
  return (
    <div>
      { 1 === 1 && <p>์ฐธ์ด๋ฉด ๋ณด์—ฌ์ค„ HTML</p> }  <!-- ์™ผ์ชฝ ์กฐ๊ฑด์‹์ด true๋ฉด ์˜ค๋ฅธ์ชฝ JSX๊ฐ€ ๊ทธ ์ž๋ฆฌ์— ๋‚จ๊ณ  ์™ผ์ชฝ ์กฐ๊ฑด์‹์ด false์ด๋ฉด false๊ฐ€ ๋‚จ๋Š”๋‹ค. false๊ฐ€ ๋‚จ์œผ๋ฉด HTML๋กœ ๋ Œ๋”๋งํ•˜์ง€ ์•Š๋Š”๋‹ค -->
    </div>
  )
}

 

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){  // switch(๊ฒ€์‚ฌํ• ๋ณ€์ˆ˜){}
    case 'seller' :  // case ๊ฒ€์‚ฌํ• ๋ณ€์ˆ˜๊ฐ€์ด๊ฑฐ๋ž‘์ผ์น˜ํ•˜๋ƒ: ๋ฅผ ๋„ฃ์–ด์คŒ
      return <h4>ํŒ๋งค์ž ๋กœ๊ทธ์ธ</h4>  // ์ผ์น˜ํ•˜๋ฉด ์‹คํ–‰
    case 'customer' :
      return <h4>๊ตฌ๋งค์ž ๋กœ๊ทธ์ธ</h4>
    default :  // else๋ฌธ๊ณผ ๋™์ผ
      return <h4>๊ทธ๋ƒฅ ๋กœ๊ทธ์ธ</h4>
  }
}

- ์žฅ์ : if๋ฌธ ์—ฐ๋‹ฌ์•„์“ธ ๋•Œ ์ฝ”๋“œ๊ฐ€ ์•ฝ๊ฐ„ ์ค„์–ด๋“ค ์ˆ˜ ์žˆ๋‹ค.
- ๋‹จ์ : ์กฐ๊ฑด์‹๋ž€์— ๋ณ€์ˆ˜ ํ•˜๋‚˜๋งŒ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค

 

5๏ธโƒฃ object/array ์ž๋ฃŒํ˜• ์‘์šฉ

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

    </div>
  )
} 

// ์•„๋‹˜ ์ข€ ๋” ๊น”๋”ํ•˜๊ฒŒ ๋ณ€์ˆ˜์— ๋”ฐ๋กœ ์ €์žฅํ•ด์„œ ์“ฐ๊ธฐ

var ํƒญUI = { 
  info : <p>์ƒํ’ˆ์ •๋ณด</p>,
  shipping : <p>๋ฐฐ์†ก๊ด€๋ จ</p>,
  refund : <p>ํ™˜๋ถˆ์•ฝ๊ด€</p>
}

function Component() {
  var ํ˜„์žฌ์ƒํƒœ = 'info';
  return (
    <div>
      {
        ํƒญUI[ํ˜„์žฌ์ƒํƒœ]
      }
    </div>
  )
}

- ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ html ํƒœ๊ทธ๋“ค์„ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ
- if๋ฌธ์ด ์•„๋‹ˆ๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ object ์ž๋ฃŒํ˜•์— ๋‚ด๊ฐ€ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์€ HTML์„ ๋‹ค ๋‹ด๋Š”๋‹ค.
- ๋งˆ์ง€๋ง‰์— object{} ๋’ค์— [] ๋Œ€๊ด„ํ˜ธ๋ฅผ ๋ถ™์—ฌ์„œ "key๊ฐ’์ด ํ˜„์žฌ์ƒํƒœ์ธ ์ž๋ฃŒ๋ฅผ ๋ฝ‘๊ฒ ์Šต๋‹ˆ๋‹ค" ๋ผ๊ณ  ์จ๋†“๋Š”๋‹ค

- ๊ทธ๋Ÿผ ์ด์ œ ํ˜„์žฌ์ƒํƒœ๋ผ๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์— ๋”ฐ๋ผ์„œ ์›ํ•˜๋Š” HTML์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.
- ๋งŒ์•ฝ์— var ํ˜„์žฌ์ƒํƒœ๊ฐ€ 'info'๋ฉด info ํ•ญ๋ชฉ์— ์ €์žฅ๋œ <p>ํƒœ๊ทธ๊ฐ€ ๋ณด์—ฌ์งˆ ๊ฒƒ์ด๊ณ 
- ๋งŒ์•ฝ์— var ํ˜„์žฌ์ƒํƒœ๊ฐ€ 'refund'๋ฉด refund ํ•ญ๋ชฉ์— ์ €์žฅ๋œ <p>ํƒœ๊ทธ๊ฐ€ ๋ณด์—ฌ์ง„๋‹ค.


๋ณธ ํฌ์ŠคํŒ…์€ << React ๋ฆฌ์•กํŠธ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ๊นŒ์ง€! >> ๊ฐ•์˜๋ฅผ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.