โ ๋ชฉํ!
Path Parameter
์Query Parameter
์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํ ์ ์๋คhistory
,location
,match
๊ฐ์ฒด์ ์ฉ๋๊ฐ ๋ฌด์์ธ์ง ์ค๋ช ํ ์ ์๋คURL
์์ ๋์ ์ธ ๋ถ๋ถ์ ๋ณ์๋ก ์ฒ๋ฆฌํ ์ ์๊ณ , ์ด๋ฅผ ํตํด ๋์ ๋ผ์ฐํ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋คoffset
๊ณผlimit
๊ฐ๋ ์ ์ฌ์ฉํ์ฌ ํ์ด์ง๋ค์ด์ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ค
โญ๏ธRouting
route
+-ing
: ๊ฒฝ๋ก(route)๋ฅผ ์ฐพ์๊ฐ๋ ํ์
- ์ฆ ๋ผ์ฐํ ์ด๋, ๋ค๋ฅธ ๊ฒฝ๋ก(url ์ฃผ์)์ ๋ฐ๋ผ ๋ค๋ฅธ View(ํ๋ฉด)๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ. React Router
โ ์ ์ ๋ผ์ฐํ
์ ํด์ง ๊ฒฝ์ฐ(์ ์ , static)์ ๋ํด์๋ง ๊ฒฝ๋ก๋ฅผ ํํ
"/" => <App />
"/users" => <Users />
"/products" => <Products />
โจ๋์ ๋ผ์ฐํ
๋์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก
Path Parameter
์Query Parameter
๊ฐ ์๋ค
โDynamic Routing & Path Parameter
๋ผ์ฐํธ ๊ฒฝ๋ก ๋์ ๋ค์ด๊ฐ๋ ๊ฐ๊ธฐ ๋ค๋ฅธ id ๊ฐ๋ค์ ์ ์ฅํ๋ ๋งค๊ฐ ๋ณ์๋ฅผ Path Parameter ๋ผ๊ณ ํ๋ค
localhost: 3000 / product / 2;
localhost: 3000 / product / 45;
localhost: 3000 / product / 125;
- Path Parameter ๋ Routes ์ปดํฌ๋ํธ์์ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋๋ค
<Router>
<Switch>
<Route exact path='/product/:id' component={productDetail} />
</Switch>
</Router>
:
๋ Path Parameter ๊ฐ ์ฌ ๊ฒ์์ ์๋ฏธ.id
๋ ํด๋น Path Parameter ์ ์ด๋ฆ์ ์๋ฏธ.- ๋ณ์ ๋ช
์ ์ง๋ฏ์ด, ์์์ ์ด๋ฆ์ ์ง์ ํด์ค ์ ์๋ค. ex)
:productId
โ history, match, location ๊ฐ์ฒด
Routes.js
์Route
์ปดํฌ๋ํธ์component
ํ๋กํผํฐ์ ์ง์ ์ฐ๊ฒฐ๋์ด ์๋ ํ์ ์ปดํฌ๋ํธ๋history
,location
,match
3๊ฐ์ง ๊ฐ์ฒด๋ฅผ props ๋ฅผ ํตํด ์ ๊ณต ๋ฐ๋๋ค.
history
๊ฐ์ฒด๋ ํ์ด์ง ์ด๋์ ์ํ ์ฌ๋ฌ ๋ฉ์๋๋ค์ ๋ด๊ณ ์๋ค. (ex,push
)location
๊ฐ์ฒด๋ ํ์ฌ url ๊ฒฝ๋ก์ ๊ดํ ์ ๋ณด๋ฅผ ๋ด๋๋ค.match
๊ฐ์ฒด๋ Path Parameter ์ ๊ดํ ์ ๋ณด๋ฅผ ๋ด๋๋ค.
๐ ์ฐธ๊ณ !! withRouter HOC๐
- Route ์ ์ฐ๊ฒฐ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์, history, location, match ๊ฐ์ฒด๋ฅผ ์ ๊ณต๋ฐ์ง ๋ชปํ๋ค
- ํ์ง๋ง, ์ฐ๊ฒฐ ๋์ด์์ง ์์ ์ปดํฌ๋ํธ์์๋ ์ธ๊ฐ์ง ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๋์
withRouter HOC
๊ฐ ๊ทธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. -withRouter
๋ ํจ์์ด๋ค. - ์ธ์๋ก ์ปดํฌ๋ํธ๋ฅผ ๋ฐ๊ณ , ํด๋น ์ปดํฌ๋ํธ์ 3๊ฐ์ง ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํ ์ปดํฌ๋ํธ๋ฅผ ๋ฐํํ๋ค.๐ก
โ Pagination & Query Parameter
โ Query Parameter
์ฟผ๋ฆฌ ์คํธ๋ง์ด๋ ๋ง ๊ทธ๋๋ก ํด๋น ์๋ํฌ์ธํธ์ ๋ํด ์ง์๋ฌธ(query)๋ฅผ ๋ณด๋ด๋ ์์ฒญ์ ๋ปํ๋ค
์ฟผ๋ฆฌ์คํธ๋ง์ ์ด์ฉํ ํ์ด์ง ๋ค์ด์ ๊ธฐ๋ฅ ๋ํ ๋์ ๋ผ์ฐํ ๊ธฐ๋ฅ๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์๋๋ฐ, ๋ ๊ธฐ๋ฅ์ ๊ตฌํ ์์๋ฅผ ๋น๊ตํด๋ณด๋ฉด!
:: ๋์ ๋ผ์ฐํ
- ๋ฆฌ์คํธ ํ์ด์ง์์ ์นด๋๋ฅผ ํด๋ฆญ.
- url ์ด๋. ์ด๋, ์นด๋์ ๊ณ ์ ํ id ๊ฐ์ด url ์ ํฌํจ๋๋ค.
- ์ด๋ํ ํ์ด์ง์์, url ์ ๋ด๊ฒจ์๋ id ๊ฐ์
match
๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ ธ์จ๋ค. - ๊ฐ์ ธ์จ id ๊ฐ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค.
:: ํ์ด์ง๋ค์ด์
- ๋ฆฌ์คํธ ํ์ด์ง์์ ๋ฒํผ์ ํด๋ฆญ.
- url ์ด๋. ์ด๋ url ์๋ ๊ฐ ๋ฒํผ์ ํด๋นํ๋ ์ฟผ๋ฆฌ์คํธ๋ง์ด ํฌํจ๋๋ค.
- ์ด๋ํ ํ์ด์ง์์, url ์ ๋ด๊ฒจ์๋ ์ฟผ๋ฆฌ์คํธ๋ง์
location
๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ ธ์จ๋ค. - ๊ฐ์ ธ์จ ์ฟผ๋ฆฌ์คํธ๋ง์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค.
์ค์ ํ๋ก์ ํธ์์ ์ ์ฉ ์์
fetch(`${GET_CATEGORY_API}/categories?size=10&page=${num}`)
.then((response) => response.json())
.then((productsdata) => {
this.setState({
productsData: productsdata.message,
num: num + 1,
});
});