[React] React.lazy 와 Suspense
728x90

Today, What I learned?

우리 ν”„λ‘œμ νŠΈμ— μ μš©λ˜μ–΄ μžˆλŠ” μ½”λ“œλΆ„ν• μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λ € ν•œλ‹€.

λ‚΄κ°€ μ μš©ν•œ 뢀뢄이 μ•„λ‹ˆμ—ˆκ³ , λ‚˜λ„ 처음 μ ‘ν•œ 것이라 아직 μƒμ†Œν•œ λΆ€λΆ„!...

λ¦¬μ•‘νŠΈ κ³΅μ‹λ¬Έμ„œμ—λ„ 이 뢀뢄이 잘 μ„€λͺ…λ˜μ–΄ μžˆλ‹€.

 

https://ko.reactjs.org/docs/code-splitting.html

 

μ½”λ“œ λΆ„ν•  – React

A JavaScript library for building user interfaces

ko.reactjs.org

 

 

 

μ½”λ“œ 뢄할은 앱을 μ§€μ—°λ‘œλ”©(lazy loading) ν•  수 μžˆλ„λ‘ 도와쀀닀.

μ‚¬μš©μžκ°€ ν•„μš”ν•œ μ½”λ“œλ₯Ό κ·Έλ•Œκ·Έλ•Œ 뢈러였기 λ•Œλ¬Έμ— 초기 λ‘œλ”©μ— ν•„μš”ν•œ μ½”λ“œκ°€ 쀄어듀고, μ„±λŠ₯ ν–₯상에 λ§Žμ€ 도움이 λœλ‹€.

 

 

React.lazy

React.lazy ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄μ„œ 동적 import둜 각각의 μ»΄ν¬λ„ŒνŠΈλ₯Ό λ Œλ”λ§ ν•  수 μžˆλ‹€.

라우트 μ»΄ν¬λ„ŒνŠΈμ—λŠ” React.lazy둜 뢈러온 μ»΄ν¬λ„ŒνŠΈλ₯Ό μ μš©ν•œλ‹€.

const MyPageComponentPage = React.lazy(() => import('pages/MyPage'));


 <Route
        path="/mypage"
        element={
          useIsLogin() ? <MyPageComponentPage /> : <Navigate to="/" replace />
        }
        errorElement={<ErrorPage />}
 />

 

 

Suspense

Suspense μ»΄ν¬λ„ŒνŠΈμ—μ„œ fallback propsλ₯Ό 섀정해두면 React.lazy μ»΄ν¬λ„ŒνŠΈκ°€ λ‘œλ”©λ  λ•ŒκΉŒμ§€ props둜 μ „λ‹¬λœ μ»΄ν¬λ„ŒνŠΈλ₯Ό 보여쀀닀.

λ‘œλ”© νŽ˜μ΄μ§€λ₯Ό λ„£κΈ° λ”±!

<Suspense fallback={<LoadingPage />}>
    ...
</Suspense>

 

 

μ½”λ“œλΆ„ν•  확인

νŽ˜μ΄μ§€μ— 접속할 λ•Œ λ§ˆλ‹€ 각각 λΆ„ν• λœ μ½”λ“œκ°€ λ‘œλ“œλ˜λŠ” 것을 λ„€νŠΈμ›Œν¬μ—μ„œ 확인할 수 μžˆλ‹€.

 

νŒ€μ› μ°ΎκΈ° νŽ˜μ΄μ§€ 접속 μ‹œ

λ§ˆμ΄νŽ˜μ΄μ§€ 접속 μ‹œ

 

λ§Œμ•½ 뢄할을 해두지 μ•Šμ•˜λ‹€λ©΄ ν•œ λ²ˆμ— λͺ¨λ“  μ½”λ“œλ₯Ό λΆˆλŸ¬μ™”μ„ 것이기 λ•Œλ¬Έμ— νŽ˜μ΄μ§€λ₯Ό 이동할 λ•Œλ§ˆλ‹€ λ‹€μ‹œ 슀크립트λ₯Ό λ°›μ•„μ˜€μ§€ μ•Šμ„ 것!..

 

728x90