- props๋ฅผ ๋ณด๋๋๋ฐ ์ถ๋ ฅ์ด ์๋๋ค๊ฑฐ๋, ์ด๋ฏธ์ง๋ฅผ ๋ฃ์๋๋ฐ ์๋ณด์ด๋ ๋ฒ๊ทธ๊ฐ์ ๊ฒ ์๊ธด๋ค๋ฉด
- ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ผ์ Elements ํญ ์ดํด๋ณด๋ฉด ๋๋๋ฐ ์ฌ๊ธฐ์ ๋ด๊ฐ ์ง ์ฝ๋๋ฅผ ์ค์ html css๋ก ๋ณํ๋์ด์ ๋ณด์ฌ์ง๋ค.
- ๊ทธ๊ฒ ์ซ๊ณ ์ปดํฌ๋ํธ๋ก ๋ฏธ๋ฆฌ ๋ณด๊ณ ์ถ์ผ๋ฉด ๋ฆฌ์กํธ ๊ฐ๋ฐ์๋๊ตฌ๋ฅผ ์ค์นํด์ ์ผ๋ณด๋ฉด ๋๋ค.
โ๏ธ ํฌ๋กฌ ํ์ฅํ๋ก๊ทธ๋จ: React Developer Tools
https://chrome.google.com/webstore/
Chrome ์น ์คํ ์ด
Chrome์ ์ฌ์ฉํ ์ ์ฉํ ์ฑ, ๊ฒ์, ํ์ฅ ํ๋ก๊ทธ๋จ ๋ฐ ํ ๋ง๋ฅผ ์ฐพ์๋ณด์ธ์.
chrome.google.com
- ํฌ๋กฌ ์น์คํ ์ด ๋ค์ด๊ฐ๋ฉด ํ์ฅํ๋ก๊ทธ๋จ ์ค์น๊ฐ ๊ฐ๋ฅํ๋ค.
- ์ฌ๊ธฐ์ React developer Tools ์ค์นํ๋ฉด Compoents ํญ์ด ์๊ธฐ๋๋ฐ, ๋ด๊ฐ ๊ฐ๋ฐ์ค์ธ ๋ฆฌ์กํธ์ฌ์ดํธ๋ฅผ ์ปดํฌ๋ํธ๋ก ๋ฏธ๋ฆฌ๋ณผ ์ ์๋ค.
- ์ผ์ชฝ์์ ์ปดํฌ๋ํธ ๊ตฌ์กฐ ํ์
์ด ๊ฐ๋ฅํ๊ณ
- ์ผ์ชฝ ์๋จ ์์ด์ฝ ๋๋ฌ์ ์ปดํฌ๋ํธ ์ฐ์ด๋ณด๋ฉด ๊ฑฐ๊ธฐ ์๋ state, props ๋ฑ ์กฐํ ๊ฐ๋ฅํ๋ค.
โ๏ธ Profiler ํญ์์ ์ฑ๋ฅํ๊ฐ ๊ฐ๋ฅ
- Profiler ํญ ๋ค์ด๊ฐ์
→ ๋
นํ๋ฒํผ ๋๋ฅด๊ณ
→ ํ์ด์ง ์ด๋์ด๋ ๋ฒํผ์กฐ์์ ํด๋ณด๊ณ
→ ๋
นํ ๋๋ด๋ฉด
- ๋ฐฉ๊ธ ๋ ๋๋ง๋ ๋ชจ๋ ์ปดํฌ๋ํธ์ ๋ ๋๋ง ์๊ฐ์ ์ธก์ ํด์ค๋ค.
โ๏ธ Redux Developer Tools
- ์ด๊ฒ๋ ํฌ๋กฌ ์น์คํ ์ด์์ ์ค์น ๊ฐ๋ฅ
- Redux store์ ์๋ state๋ฅผ ์ ๋ถ ํ์ธ๊ฐ๋ฅํ๋ค.
- ๊ทธ๋ฆฌ๊ณ dispatch ๋ ๋ฆด ๋ ๋ง๋ค ๋ญ๊ฐ ์ด๋ป๊ฒ ๋ฐ๋์๋์ง ๋ก๊ทธ๋ฅผ ์์ฑํด์ค๋ค. store ๋ณต์กํด์ง๋ฉด ์ ์ฉํ๋ค.
โ๏ธ lazy import
- ๋ฆฌ์กํธ ์ฝ๋ ๋ค ์งฐ์ผ๋ฉด npm run build ์
๋ ฅํด์ html css js ํ์ผ๋ก ๋ณํํด์ผ ํ๋ค.
- ํ์ง๋ง ๋ฆฌ์กํธ๋ก ๋ง๋๋ Single Page Application์ ํน์ง์ html, js ํ์ผ์ด ํ๋๋ง ์์ฑ๋๋ค.
- ๊ทธ ์์ ์ง๊ธ๊น์ง ๋ง๋ App/Detail/Cart ๋ชจ๋ ๋ด์ฉ์ด ๋ค์ด์์ด์ ํ์ผ ์ฌ์ด์ฆ๊ฐ ํฌ๋ค.
- ๊ทธ๋์ ๋ฆฌ์กํธ ์ฌ์ดํธ๋ค์ ์ฒซ ํ์ด์ง ๋ก๋ฉ์๋๊ฐ ๋งค์ฐ ๋๋ฆฌ๋ค.
- ๊ทธ๊ฒ ์ซ๋ค๋ฉด js ํ์ผ ์๊ฒ ์ชผ๊ฐ๋ฉด ๋๋ค.
- ์ชผ๊ฐ๋ ๋ฐฉ๋ฒ์ import ๋ฌธ๋ฒ์ ์ฝ๊ฐ ๊ณ ์น๋ฉด ๋๋ค.
- ์ง๊ธ ๋ฉ์ธํ์ด์ง ๋ณด๋ฉด Detail, Cart๋ฅผ import ํด์ ์ฐ๊ณ ์๋๋ฐ ์ด๋ฐ ์ปดํฌ๋ํธ๋ค์ ์๋์ ๊ฐ์ ๋ฌธ๋ฒ์ผ๋ก import ํด๋์ผ๋ฉด ์ข๋ค.
// App.js
import {lazy, Suspense, useEffect, useState} from 'react'
const Detail = lazy( () => import('./routes/Detail.js') )
const Cart = lazy( () => import('./routes/Cart.js') )
// lazy ์ฌ์ฉํ๋ฉด ๋น์ฐํ Detail ์ปดํฌ๋ํธ ๋ก๋๊น์ง ์ง์ฐ์๊ฐ์ด ๋ฐ์ํ๋ค.
// Suspense๋ก Detail ์ปดํฌ๋ํธ ๊ฐ์ธ๊ธฐ(๊ท์ฐฎ์ผ๋ฉด <Suspense> ์ด๊ฑธ๋ก <Routes> ์ ๋ถ ๊ฐ์ธ๋ ๋๋ค.
// -> Detail ์ปดํฌ๋ํธ๊ฐ ๋ก๋ฉ์ค์ผ ๋ ๋์ ๋ณด์ฌ์ค html ์์ฑ๋ ๊ฐ๋ฅํด์ง.
<Suspense fallback={ <div>๋ก๋ฉ์ค์</div> }>
<Detail shoes={shoes} />
</Suspense>
- lazy ๋ฌธ๋ฒ์ผ๋ก๋ ๋๊ฐ์ import๊ฐ ๊ฐ๋ฅํ๋ฐ ์ด ๊ฒฝ์ฐ์ "Detail ์ปดํฌ๋ํธ๊ฐ ํ์ํด์ง๋ฉด import ํด์ฃผ์ธ์" ๋ผ๋ ๋ป์ด ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ํด๋์ผ๋ฉด Detail ์ปดํฌ๋ํธ ๋ด์ฉ์ ๋ค๋ฅธ jsํ์ผ๋ก ์ชผ๊ฐ ์ค๋ค.
- ๊ทธ๋์ ์ฒซ ํ์ด์ง ๋ก๋ฉ์๋๋ฅผ ํฅ์์ํฌ ์ ์๋ค. ํ์ํ ๊ฒ ๊ฐ์๋ฉด ์ฌ์ฉ ใฑ ใฑ
๋ณธ ํฌ์คํ ์ << React ๋ฆฌ์กํธ ๊ธฐ์ด๋ถํฐ ์ผํ๋ชฐ ํ๋ก์ ํธ๊น์ง! >> ๊ฐ์๋ฅผ ์ฐธ๊ณ ํฉ๋๋ค.