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