Suspense ์ปดํฌ๋ํธ์ fallback ์์๋ก ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ ์ ๋ฌ?
์๋
ํ์ธ์! Suspense ๋ด๋ถ์์ ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ์ถ์ ํ๊ธฐ ์ํด์๋ Promise์ ์ํ๋ฅผ throw ํด์ฃผ์ด์ผ ํฉ๋๋ค. Suspense๋ ๋ด๋ถ ์์ ์์์์ throwํ promise์ ์ํ๊ฐ pending ์ธ๊ฒฝ์ฐ fallback์ ๋ฑ๋กํด์ค ์ปดํฌ๋ํธ๋ฅผ, success ์ํ์ผ ๊ฒฝ์ฐ promise ์ํ๊ฐ ์๋ฃ๋์๋ค๋ ๊ฒ์ ์ธ์งํ๊ณ ๋ด๋ถ children ์ปดํฌ๋ํธ๋ฅผ ๋ณด์ฌ์ฃผ๊ฒ ๋ฉ๋๋ค. ์๋ฒ ์ปดํฌ๋ํธ๊ฐ ์ ์์ ์ผ๋ก ๋์ํ ์ด์ ๋ async/await๋ก ๊ฐ์ธ์ฃผ์๊ธฐ ๋๋ฌธ์ await ๊ฑธ๋ฆฐ ์ฝ๋๊ฐ ์๋ฃ๋ ์ฌ๋ถ๋ฅผ ํ์
ํ์ฌ Suspense๊ฐ ์ด๋ฅผ ์ถ์ ํ๊ณ ๋์์ด ๊ฐ๋ฅํ์ต๋๋ค. Next.js์์ loading.jsx, error.jsx ๋ชจ๋ ์ด๋ฌํ ํํ๋ก ๊ตฌํ๋์ด ์์ต๋๋ค. ํ์ง๋ง client component์์ useEffect๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ๋ฐํ๋๋ promise ์ํ๊ฐ ์์ด JSX ์์๋ง์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ์ ์์ ์ผ๋ก Suspense๊ฐ ๋์ํ์ง ์๊ฒ ๋ฉ๋๋ค. ๋ฆฌ์ํธ ๊ณต์ ๋ฌธ์์์๋ CSR์ธ ๊ฒฝ์ฐ ์คํ์ ์ธ ๊ธฐ๋ฅ์ด์ง๋ง, ๋ฐ์ดํฐ fetching์ use์ ํจ๊ป ์ฌ์ฉํด์ Promise ์ํ๋ฅผ Suspense์๊ฒ ์๋ ค์ฃผ๋ผ๊ณ ํ๊ณ ์์ต๋๋ค. ์์ง์ ์คํ ๋จ๊ณ์ฌ์ ์๋ง 19 ๋ฒ์ ์ ์ ์ ๋ฐ์๋์ง ์์๊น ์ถ์ด์. ๊ณต์ ๋ฌธ์์ Suspense์ use๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ณต์ ๋ฌธ์์ Suspense ์์ ์ฝ๋๋ ๋ณ๋๋ก use hook์ ๋ง๋ค์ด์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. https://react.dev/reference/react/Suspensehttps://react.dev/reference/react/use