Suspense

Suspense

์ปดํฌ๋„ŒํŠธ์˜ ๋ Œ๋”๋ง์„ ์–ด๋–ค ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ์ž ์‹œ ์ค‘๋‹จ์‹œํ‚ค๊ณ  ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋จผ์ € ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ

๋ฆฌ์—‘ํŠธ์—๊ฒŒ ์ปดํฌ๋„ŒํŠธ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์•„์ง ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค๊ณ  ์•Œ๋ ค์ฃผ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜

  • SSR์—์„œ Hydration ๊ณผ์ •์ด ์ผ์–ด๋‚˜๊ธฐ ์ „ ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. (SSR ๋‹จ์ )

  • ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „ ๋ชจ๋“ ๊ฒƒ์ด ์ค€๋น„๋˜์–ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์€ ํšจ์œจ์ ์ด์ง€ ์•Š๋Š”๋‹ค.

  • ์•ฑ์„ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ์ค€๋น„๊ฐ€ ๋นจ๋ฆฌ ๋œ ์ปดํฌ๋„ŒํŠธ๋Š” ๊ทธ๋ ‡์ง€ ๋ชปํ•œ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๋ชจ๋‘ ์ค€๋น„๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผํ•˜๋ฏ€๋กœ ๋น„ํšจ์œจ์ ์ด๊ฒŒ ๋œ๋‹ค.

import { Suspense } from 'react';

const App = () => {
  return <Layout>
    <Suspense fallback={<Skeleton />}>
      <Sidebar />
    </Suspense>
    <Suspense fallback={<Skeleton />}>
      <Post />
    </Suspense>
    <Suspense fallback={<Skeleton />}>
      <Comments />
    </Suspense>
  </Layout>
}

React 18์—์„œ์˜ Suspense

  • SSR์—์„œ Suspense๊ฐ€ ๋™์ž‘ ํ•˜๋„๋ก ์ถ”๊ฐ€ ๋˜์—ˆ๋‹ค.

  • <Suspense> ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์„ ๋” ์ž‘์€ ๋…๋ฆฝ์ ์ธ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์˜ ๋ Œ๋”๋ง์„ ์ฐจ๋‹จํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • ๊ฒฐ๊ณผ์ ์œผ๋กœ ์•ฑ ์‚ฌ์šฉ์ž๋Š” ํ™”๋ฉด์˜ ์ปจํ…์ธ ๋ฅผ ๋” ๋นจ๋ฆฌ ํ™•์ธํ•˜๊ณ  ๋” ๋นจ๋ฆฌ ์ธํ„ฐ๋ ‰์…˜์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค.

Last updated