โฐ [Ver1] 30๋ถ„ ๊ฐœ๋ฐœ ๋ฐ ํšŒ๊ณ  - ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง

โœŒ๐Ÿป ํšŒ๊ณ 

๊ฐ์ฒด ๋ฐฐ์—ด์— map() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๋˜ ์ค‘, ํŠน์ • ์กฐ๊ฑด์—์„œ๋งŒ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ฒผ๋‹ค.

์ด๋•Œ JSX์—์„œ && ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ •๋ง ํ•„์š”ํ•œ๊ฐ€์— ๋Œ€ํ•œ ์˜๋ฌธ์ด ๋“ค์–ด, ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง ๋ฐฉ์‹์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ํ•™์Šตํ•ด๋ณด์•˜๋‹ค.

๐Ÿ“š ์ •๋ฆฌ

JSX์—์„œ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง

{icon && <FontAwesomeIcon icon={icon} />}   vs   <FontAwesomeIcon icon={icon} />

 

๐Ÿ’ก ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—: ์™œ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์ด ์ค‘์š”ํ•œ๊ฐ€?

๋ฆฌ์•กํŠธ์—์„œ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•  ๋•Œ props๊ฐ€ ์–ด๋–ป๊ฒŒ ๋“ค์–ด์˜ค๋Š”์ง€์— ๋”ฐ๋ผ ๋™์ž‘์ด ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง„๋‹ค.

ํŠนํžˆ ์•„์ด์ฝ˜, ์ด๋ฏธ์ง€, ํ…์ŠคํŠธ ๋“ฑ ์„ ํƒ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ์š”์†Œ๋“ค์€ undefined, null ๋“ฑ ๋น„์–ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ์˜ํ•ด ๋ Œ๋”๋ง ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ๋งŽ๋‹ค.

 

์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ์กฐ๊ฑด ์—†์ด ๋ฌด์ž‘์ • ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๊ฒŒ ๋˜๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค:

  • ์ฝ˜์†”์— ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
  • ๋ Œ๋”๋ง ์˜ค๋ฅ˜ ๋ฐœ์ƒ (ํŠนํžˆ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ปดํฌ๋„ŒํŠธ์ผ ๋•Œ)
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ดค์„ ๋•Œ ์ด์ƒํ•œ UI๊ฐ€ ๋œธ

 

์ƒํ™ฉ ๋น„๊ต

โœ… 1. ์•ˆ์ „ํ•œ ๋ Œ๋”๋ง ๋ฐฉ์‹

{icon && <FontAwesomeIcon icon={icon} />}
  • icon์ด truthy(๊ฐ’์ด ์กด์žฌ)ํ•  ๊ฒฝ์šฐ์—๋งŒ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง๋จ
  • undefined, null, '' ๋“ฑ falsyํ•œ ๊ฐ’์ผ ๊ฒฝ์šฐ ์•„์˜ˆ ์ปดํฌ๋„ŒํŠธ ์ž์ฒด๊ฐ€ ๋ Œ๋”๋ง๋˜์ง€ ์•Š์Œ
  • ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ → ๋งค์šฐ ์•ˆ์ „

 

โŒ 2. ๋ฌด์กฐ๊ฑด ๋ Œ๋”๋ง

<FontAwesomeIcon icon={icon} />
  • icon์ด undefined๋ผ๋„ ๋ Œ๋”๋ง์„ ์‹œ๋„ํ•จ
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ icon์ด ํ•„์ˆ˜ prop์ผ ๊ฒฝ์šฐ ์—๋Ÿฌ ๋ฐœ์ƒ ๊ฐ€๋Šฅ
  • ์‹ฌ์ง€์–ด ๋ Œ๋”๋ง์€ ๋˜์ง€๋งŒ ๋นˆ ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๊ฑฐ๋‚˜, UI๊ฐ€ ๊นจ์ง€๋Š” ๊ฒฝ์šฐ๋„ ๋ฐœ์ƒ

 

์™œ &&๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ &&๋Š” ์งง์€ ํ‰๊ฐ€(short-circuit evaluation)๋ผ๋Š” ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค.
์กฐ๊ฑด && ๊ฒฐ๊ณผ
  • ์•ž์˜ ์กฐ๊ฑด์ด false๋ฉด ๋’ค๋Š” ํ‰๊ฐ€์กฐ์ฐจ ํ•˜์ง€ ์•Š๊ณ  ๋ฌด์‹œ
  • ๋”ฐ๋ผ์„œ false && <Component />๋Š” ๋ Œ๋”๋ง๋˜์ง€ ์•Š์Œ
  • ์กฐ๊ฑด์ด true์—ฌ์•ผ๋งŒ <Component />๊ฐ€ ์‹คํ–‰๋จ

์˜ˆ์‹œ:

const icon = undefined;

// ์•ˆ์ „ํ•œ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง
{icon && <FontAwesomeIcon icon={icon} />} // ์•„๋ฌด๊ฒƒ๋„ ์•ˆ ๋‚˜์˜ด

// ๋ฌด์กฐ๊ฑด ๋ Œ๋”๋ง
<FontAwesomeIcon icon={icon} /> // ์ฝ˜์†” ์—๋Ÿฌ ๋˜๋Š” UI ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ

 

JSX ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง ์ •๋ฆฌ

๋ฐฉ๋ฒ• ์„ค๋ช… ์‚ฌ์šฉ ์ƒํ™ฉ
&& ์—ฐ์‚ฐ์ž ์กฐ๊ฑด์ด ์ฐธ์ผ ๋•Œ๋งŒ ๋ Œ๋”๋ง ๋‹จ์ˆœ ์กฐ๊ฑด์— ์ž์ฃผ ์‚ฌ์šฉ
์‚ผํ•ญ ์—ฐ์‚ฐ์ž (? :) ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ ์ค‘ ํ•˜๋‚˜ ์„ ํƒ ๋ณด์—ฌ์ค„ UI๊ฐ€ ๋‘ ๊ฐ€์ง€ ์ด์ƒ์ผ ๋•Œ
if๋ฌธ JSX ๋ฐ–์—์„œ ์กฐ๊ฑด ์ฒ˜๋ฆฌ ๋ Œ๋”๋ง์ด ๋งŽ์ด ๋‹ฌ๋ผ์งˆ ๋•Œ
ํ•จ์ˆ˜๋กœ ๋ถ„๊ธฐ ๋ณต์žกํ•œ ์กฐ๊ฑด์ผ ๋•Œ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ๋กœ์ง์„ ๋ถ„๋ฆฌํ•  ๋•Œ

 

์‹ค์ œ ์‹ค๋ฌด์—์„œ๋Š” ์–ธ์ œ ์ด ํŒจํ„ด์„ ์“ธ๊นŒ?

  • ์•„์ด์ฝ˜์„ ์„ ํƒ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒฝ์šฐ
  • ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž๋งŒ ํŠน์ • ๋ฒ„ํŠผ์„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•  ๋•Œ
  • ์ด๋ฏธ์ง€๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์ง ๋„์ฐฉํ•˜์ง€ ์•Š์€ ๋กœ๋”ฉ ์ƒํƒœ ์ฒ˜๋ฆฌ
  • props๋กœ ๋‚ด๋ ค์˜จ ๊ฐ’์ด ์˜ต์…˜์ผ ๋•Œ (nullable, optional)

 

์ •๋ฆฌ

  • icon && <FontAwesomeIcon icon={icon} />๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
  • <FontAwesomeIcon icon={icon} />๋Š” icon์ด undefined์ผ ๊ฒฝ์šฐ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜ํ•œ ๋ฐฉ์‹์ด๋‹ค.
  • JSX์—์„œ๋Š” ํ•ญ์ƒ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง ํŒจํ„ด์„ ์ตํ˜€๋‘์ž. ํŠนํžˆ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ๋Š” undefined ์ฒดํฌ๋ฅผ ๋นผ๋จน์ง€ ์•Š๋Š” ์Šต๊ด€์ด ์ค‘์š”ํ•˜๋‹ค.
  • JSX์—์„œ ์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง์€ UI ์˜ค๋ฅ˜ ๋ฐฉ์ง€์— ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.
  • `&&` ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๊ฐ’์ด ์žˆ์„ ๋•Œ๋งŒ ์•ˆ์ „ํ•˜๊ฒŒ ๋ Œ๋”๋ง ๊ฐ€๋Šฅํ•˜๋‹ค.