lazy import
- ๋ฆฌ์กํธ ์ฌ์ดํธ๋ค์ ์ฒซ ํ์ด์ง ๋ก๋ฉ์๋๊ฐ ๋งค์ฐ ๋๋ฆด ์ ์๋๋ฐ ๊ทธ๊ฒ ์ซ๋ค๋ฉด js ํ์ผ์ ์๊ฒ ์ชผ๊ฐ๋ฉด ๋๋ค.
- ์ชผ๊ฐ๋ ๋ฐฉ๋ฒ์ import ๋ฌธ๋ฒ์ ์ฝ๊ฐ ๊ณ ์น๋ฉด ๋๋๋ฐ ์ง๊ธ ํ์ด์ง์์ ์ฌ์ฉํ์ง ์๊ณ ์๋ ์ปดํฌ๋ํธ๋ค์ lazy import ํด๋์ผ๋ฉด ์ข๋ค.
- ๋จ์ : lazy๋ฌธ๋ฒ์ผ๋ก importํ ์ปดํฌ๋ํธ๋ค์ ๋ก๋ํ ๋๋ ๋ก๋ฉ์๊ฐ์ด ๋ฐ์ํ ์ ์๋ค.
1. lazy()
(App.js)
import Detail from './routes/Detail.js'
import Cart from './routes/Cart.js'
↓↓↓
(App.js)
import {lazy, Suspense, useEffect, useState} from 'react'
const Detail = lazy( () => import('./routes/Detail.js') )
const Cart = lazy( () => import('./routes/Cart.js') )
lazy ๋ฌธ๋ฒ์ผ๋ก๋ ๋๊ฐ์ด import๊ฐ ๊ฐ๋ฅํ๋ฐ ์ด ๊ฒฝ์ฐ์
"Detail ์ปดํฌ๋ํธ๊ฐ ํ์ํด์ง๋ฉด import ํด์ฃผ์ธ์" ๋ผ๋ ๋ป์ด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ํด๋์ผ๋ฉด Detail ์ปดํฌ๋ํธ ๋ด์ฉ์ ๋ค๋ฅธ js ํ์ผ๋ก ์ชผ๊ฐ์ค๋๋ค.
๊ทธ๋์ ์ฒซ ํ์ด์ง ๋ก๋ฉ์๋๋ฅผ ํฅ์์ํฌ ์ ์๋ค.
2. Suspense
lazy ์ฌ์ฉํ๋ฉด ๋น์ฐํ Detail ์ปดํฌ๋ํธ ๋ก๋๊น์ง ์ง์ฐ์๊ฐ์ด ๋ฐ์ํ ์ ์๋ค.
๊ทธ๋ด ๋
1. Suspense ๋ผ๋๊ฑฐ import ํด์ค๊ณ
2. Detail ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ธ๋ฉด
Detail ์ปดํฌ๋ํธ๊ฐ ๋ก๋ฉ์ค์ผ ๋ ๋์ ๋ณด์ฌ์ค html ์์ฑ๋ ๊ฐ๋ฅํ๋ค.
<Suspense fallback={ <div>๋ก๋ฉ์ค์</div> }>
<Detail shoes={shoes} />
</Suspense>
๊ท์ฐฎ์ผ๋ฉด <Suspense> ์ด๊ฑธ๋ก <Routes> ์ ๋ถ ๊ฐ์ธ๋ ๋๋ค.
'๐ปWEB FrontEnd > ํ๋ ์์ํฌ React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฑ๋ฅ๊ฐ์ (3) - batching, useTransition, useDeferredValue (0) | 2022.07.13 |
---|---|
์ฑ๋ฅ๊ฐ์ (2) - ์ฌ๋ ๋๋ง ๋ง๋ ๋ฒ (0) | 2022.07.13 |
react-query : ์ค์๊ฐ ๋ฐ์ดํฐ๊ฐ ์ค์ํ ๋? (0) | 2022.07.13 |
localStorage (0) | 2022.07.13 |
Redux (2) - state ๋ณ๊ฒฝ (0) | 2022.07.13 |