Skip to content

Latest commit

ย 

History

History
47 lines (37 loc) ยท 2.88 KB

File metadata and controls

47 lines (37 loc) ยท 2.88 KB

Fragment

๋ชฉ์ฐจ

๋ ˆํผ๋Ÿฐ์Šค

<Fragment>

  1. Fragment ์•ˆ์—์„œ ๊ทธ๋ฃนํ™”๋œ ์—˜๋ฆฌ๋จผํŠธ๋Š” DOM ๊ฒฐ๊ณผ๋ฌผ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    • Vue2๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” Fragment ๊ฐ™์€ ๋นˆ(?) ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ์—†์–ด์„œ ํ•ญ์ƒ ์˜๋ฏธ์—†๋Š” div๋กœ ๊ฐ์‹ธ์„œ ๋ถˆํŽธํ–ˆ๋Š”๋ฐ ์ข‹์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. (Vue3๋ถ€ํ„ฐ๋Š” Fragment๋ฅผ ์ง€์›ํ•œ๋‹ค๊ณ  ๋ดค๋˜ ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค..!)

์ฃผ์˜์‚ฌํ•ญ

  1. React๋Š” <></>์—์„œ []๋กœ ๋ Œ๋”๋งํ•˜๊ฑฐ๋‚˜ (๋˜๋Š” ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ), ํ˜น์€ <></> ์—์„œ ๋ Œ๋”๋งํ•˜๊ฑฐ๋‚˜ (๋˜๋Š” ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ) state๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์˜ค์ง single level๊นŒ์ง€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด <><></></> ์—์„œ ๋กœ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒƒ์€ state๊ฐ€ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ semantics๋Š” ์—ฌ๊ธฐ์„œ ์ฐธ์กฐํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • [์งˆ๋ฌธ]
    • Q1. [ ]๋กœ ๊ฐ์‹ธ๋Š” ๊ฒƒ์—๋„ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š”๊ฑด๊ฐ€์š”?
    • Q2. Fragment๋กœ ์ด์ค‘์ค‘์ฒฉ ์ด์ƒ๋ถ€ํ„ฐ๋Š” Fragment์•ˆ์˜ Child์˜ state๊ฐ€ ๋ณด์กด๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ดํ•ดํ•ด๋„ ๋ ๊นŒ์š”?
    • [๋‹ต๋ณ€]
    • A1. ์ €๋„ ์ด๋Ÿฐ ํ˜•ํƒœ๋กœ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹์€ ์ฒ˜์Œ๋ด์„œ ๋ฐฐ์—ด๋กœ ๊ฐ์‹ธ๋Š” ๊ฒŒ ์–ด๋–ค ์˜๋ฏธ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ๋„ค์š”. ์•„๋ž˜ ์ฝ”๋“œ์ƒŒ๋“œ๋ฐ•์Šค์—์„œ ํ•˜๋‚˜ ๊ฐ์‹ธ๋ณด๋ฉด ๋ฐฐ์—ด์ด๋‹ˆ๊นŒ key๋ฅผ ์„ค์ •ํ•˜๋ผ๊ณ  ๊ฒฝ๊ณ ๊ฐ€ ๋œจ๊ธด ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์— ๋Œ€ํ•ด์„œ๋Š” ์ €๋„ ๊ฐ™์€ ์˜๋ฏธ๋กœ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. (์ˆ˜์ •) ๋งํฌ ๋“ค์–ด๊ฐ€์„œ ๋ณด๋‹ˆ๊นŒ ์ •ํ™•ํžˆ๋Š” ๋ Œ๋”๋ง ์‚ฌ์ด์— ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ์ƒํƒœ๊ฐ€ ๋ณด์กด๋˜์ง€ ์•Š๋Š”๊ฑฐ๋„ค์š”!
      UI ํŠธ๋ฆฌ์—์„œ ์œ„์น˜๊ฐ€ ๊ฐ™์œผ๋ฉด ์ƒํƒœ๋ฅผ ๋ณด์กดํ•œ๋‹ค๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋งํฌ์ž…๋‹ˆ๋‹ค. https://ko.react.dev/learn/preserving-and-resetting-state#same-component-at-the-same-position-preserves-state
    • A2. ์—ฌ๋Ÿฌ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๊ฐ์Œ€ ๋•Œ, <>๋กœ ํ•ด๋„ ๋˜์ง€๋งŒ, [ ]๋กœ ๊ฐ์‹ธ๋„ ๋˜๋Š” ๊ฒƒ ๊ฐ™์•„์š”. ์˜ˆ์ œ์—์„œ ์•„๋ž˜์ฒ˜๋Ÿผ ์ˆ˜์ •ํ•ด๋ณด์‹œ๋ฉด ์ดํ•ด๊ฐ€ ๋˜์‹ค ๊ฒƒ ๊ฐ™์•„์š”.
      <>
        <PostTitle title={title} />
        <PostBody body={body} />
      </>
      
      [ <PostTitletitle=title/>, <PostBodybody=body/> ]
      
      ์•„๋ž˜์ฒ˜๋Ÿผ ํ•ด๋„ ๋ Œ๋”๋ง์ด ๋ฉ๋‹ˆ๋‹ค.
    • A3. ์˜ค ์ด๊ฑด ์ฒ˜์Œ ์•Œ์•˜๋„ค์š” ์‹ ๊ธฐํ•ฉ๋‹ˆ๋‹ค

์‚ฌ์šฉ๋ฒ•

Fragment ๋ฆฌ์ŠคํŠธ ๋ Œ๋”๋ง

  1. ๋ฐ˜๋ณต์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋ Œ๋”๋งํ•  ๋•Œ ๊ฐ ์š”์†Œ์— key๋ฅผ ํ• ๋‹นํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • key ํ• ๋‹นํ•˜๋ผ๋Š” warning์„ ์ž์ฃผ ๋ดค๋Š”๋ฐ Fragment๋กœ ๊ฐ์‹ธ์ค˜์•ผ๊ฒ ๋„ค์š”..!! ๋งจ๋‚  <>๋กœ๋งŒ ์จ์„œ ์ƒ๊ฐ์„ ๋ชปํ•˜๊ณ  ์žˆ์—ˆ์–ด์š”