Data Fetching
ํ์ตํค์๋
Suspense
Streaming with Suspense
Client vs Server Component
Suspense
์ค์ ์ฝํ ์ธ ๊ฐ ๋ก๋ฉ๋๋ ๋์ ๋ณด์ฌ์ฃผ๋
๋์ฒด ์ฝํ ์ธ์๋ฏธReact 18 ์ถ๊ฐ๋ ์ปดํฌ๋ํธ
Suspense๋ฅผ ์ฌ์ฉํ๋ฉด ์ค์ผ๋ ํค ๋ฐ ์คํผ๋์ ๊ฐ์ ๋ก๋ฉํ์๊ธฐ๋ฅผ pre-rendering ํ ์ ์๋ค. ๋ก๋ฉ์๊ฐ์ด ๊ธธ์ด์ง๋ค๋ฉด ์ฌ์ฉ์๊ฐ ํฐ ํ๋ฉด๋จผ ๋ณด๊ณ ์๋๊ฒ์ด ์๋, Loading์ ์๋ฏธ์ UI๋ฅผ ๋ณด์ฌ์ฃผ๋๊ฒ์ด ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ค.
<Suspense fallback={<Loading />}>
<SomeComponent />
</Suspense>๐ SSR์ ๊ณผ์

1. ํด๋น ํ์ด์ง์ ๋ํ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์๋ฒ์์ ๊ฐ์ ธ์จ๋ค
2. ์๋ฒ๋ ํ์ด์ง์ HTML์ ๋ ๋๋งํ๋ค
3. ํ์ด์ง์ HTML, CSS ๋ฐ JavaScript๊ฐ ํด๋ผ์ด์ธํธ๋ก ์ ์ก๋๋ค
4. ์์ฑ๋ HTML ๋ฐ CSS๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ํํ(non-interactive) ์ฌ์ฉ์ ์ธํฐํ์ด์ค
(non-interactive : ์ฌ์ฉ์๊ฐ ์ํธ์์ฉํ ์ ์๋ ์ ์ ์ธ ์ํ)๊ฐ ํ์๋๋ค
5. ๋ง์ง๋ง์ผ๋ก, React๊ฐ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ hydratesํ์ฌ ์ํธ์์ฉ ๊ฐ๋ฅํ๊ฒ ๋ง๋ ๋ค
์ ๋จ๊ณ์์ suspense๋ 4๋ฒ์ ๋จ๊ณ์์ ์ฌ์ฉํ๊ฒ ๋๋ค. ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๊ฐ ์๋ฒ์์ ๋ฐ์ HTML, CSS๋ก ์น ํ์ด์ง์ ์ด๊ธฐ ๋ฒ์ ์ ๋ก๋ฉ์์ผฐ์ง๋ง, ์์ง ์ฌ์ฉ์๋ ์ํธ ์์ฉํ ์ ์๋ ๋จ๊ณ์ด๋ค. ์ํธ์์ฉ์ ํ๋ ค๋ฉด, 5๋จ๊ณ์์ JavaScript์ React์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ๊ฐ Hydrateํ๋ ๊ณผ์ ์ด ๋๋์ผ ์ํธ์์ฉ์ด ๊ฐ๋ฅํด์ง๋ค.
๐ ์ฆ, 4๋จ๊ณ๋ถํฐ 5๋จ๊ณ๊ฐ ๋๋๋ ๊ณผ์ ๊น์ง, ์ฌ์ฉ์๊ฐ ์ํธ์์ฉ ํ ์ ์๋ ์ ์ ํ์ด์ง๋ฅผ ๋ง์ฃผํด์ผํ๋ ์ํฉ์ด ๋ฐ์๋๋๋ฐ ์ด๋ฌํ ์๊ฐ์ suspense๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๋ฉ์ค์ด๋ผ๋ UI๋ณด์ฌ์ค์ผ๋ก์ ๋๋์ UX ์ ๊ณตํ๋ค.
Streaming with Suspense

ํ์ด์ง๊ฐ ์ฌ์ฉ์์๊ฒ ํ์๋๊ธฐ ์ ์ ์๋ฒ์์ ๋ชจ๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ์๋ฃ๋์ด์ผ ํ๋ฏ๋ก ์ฌ์ ํ ์ ์ฒด์ ์ธ UI ๋ณด์ฌ์ฃผ๋ ์๋๊ฐ ๋๋ฆด ์ ์๋ค. ๊ทธ๋ฌ๋ ์คํธ๋ฆฌ๋ฐ์ ์ฌ์ฉํ๋ฉด ํ์ด์ง์ HTML์ ๋ ์์ ์ฒญํฌ๋ก ๋๋๊ณ ์ ์ง์ ์ผ๋ก ํด๋น ์ฒญํฌ๋ฅผ ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ผ ์ ์๋ค.(๋จผ์ ์จ ๋ฐ์ดํฐ๋ ๋จผ์ ๋ณด๋ธ๋ค.)

๐ค Suspense๋ก ๋น๋๊ธฐ ์์ (๋ฐ์ดํฐํจ์นญ)์ ์ํํ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ํํ๊ณ ํด๋น ์์ ์ด ์งํ๋๋ ๋์ ๋์ฒด UI๋ฅผ ํ์ํ ๋ค์ ์์ ์ด ์๋ฃ๋๋ฉด ์ปดํฌ๋ํธ๋ฅผ ๊ต์ฒดํ๋ ๋ฐฉ์์ผ๋ก ์๋
Suspense๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ด์ ์ ์ป์ ์ ์๋ค
์คํธ๋ฆฌ๋ฐ ์๋ฒ ๋ ๋๋ง- ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก HTML์ ์ ์ง์ ์ผ๋ก ๋ ๋๋ง ํ๋ค.์ ํ์ ์ํ- React๋ ์ฌ์ฉ์ ์ํธ์์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ค ์ปดํฌ๋ํธ๋ฅผ ๋จผ์ ๋ํ์์ผ๋ก ๋ง๋ค๊ฒ์ธ์ง ์ฐ์ ์์๋ฅผ ์ ํ๋ค.
๐ ์ฐธ๊ณ
Last updated