route
+ -ing
: 경로를 찾아가는 행위// Routes.js 기본적인 코드 구조
const Routes = () => {
return (
<Router>
<Nav />
<Switch>
<Route exact path="/" component={App} />
</Switch>
<Footer />
</Router>
);
};
-> React 앱이 경로에 따라 어떤 컴포넌트를 보여줄지 결정(switch)하는 역할(화면 바꿔 끼우기)
지금까지 해온 라우팅 방법으로는 완전히 정해진 경우에 대해서만 경로를 표현할 수 있었다. 하지만 동적 라우팅 방법이 생기면서 정적이지 않은 동적일 수 있는 경로에 대하여 라우팅 할 수 있게 되었다.
// Good
"/users/:id" => <Users /> // this.props.match.params.id
// Good
"/search?keyword=something" : <Search /> // this.props.location.search
보통의 웹 사이트는 전체 아이템이 보여지는 리스트 페이지와 거기서 어떤 아이템을 선택했을 때 해당 아이템의 디테일 한 정보가 보여지는 상세 페이지로 구성된다. 이때 라우트 경로에 특정 값을 넣어 해당하는 페이지로 이동할 수 있게 하는 것을 동적 라우팅이라고 한다.
라우트 경로 끝에 들어가는 각기 다른 id 값들을 저장하는 매개 변수를 Path Parameter 라고 한다.
<Router>
<Switch>
<Route exact path='/product/**:id**' component={productDetail} />
</Switch>
</Router>
:
는 Path Parameter 가 올 것임을 의미한다.id
는 해당 Path Parameter 의 이름을 의미한다. 변수 명을 짓듯이, 임의의 이름을 지정해줄 수 있다.React Router 에서 제공하는 history
, match
, location
객체를 사용하여 위의 id 값을 가져올 수 있다.
history
객체는 페이지 이동을 위한 여러 메서드들을 담고 있다.location
객체는 현재 url 경로에 관한 정보를 담는다.match
객체는 Path Parameter에 관한 정보를 담는다. Path Parameter로 명시해둔 값은 match
객체에 담기기 때문에 match
객체를 이용하여 URL에 담겨있는 id
값을 가져올 수 있다.
따라서 componentDidMount
메서드에서 해당 id
값을 통해 서버에 요청을 보내는 것을 통해 원하는 정보를 받아올 수 있다.
componentDidMount() {
fetch(`${API}/${this.props.match.params.id}`)
.then(res => res.json())
.then(res => ...);
쿼리 스트링이란 말 그대로 해당 엔드포인트에 대해 질의문을 보내는 요청을 뜻한다.
예를 들어 localhost:8000/product?limit=10&offset=5
라는 주소가 있다면 API 뒷 부분에 붙어있는 ?로 시작하는 텍스트가 바로 쿼리스트링이다.
?limit=10&offset=5
의 경우 "limit이 10이면서 offset이 5일 경우의 product 페이지를 보여달라" 는 요청으로 해석된다.
?
기호는 쿼리스트링의 시작을 알린다.limit
: 한 페이지에 보여줄 데이터 수offset
: 데이터가 시작하는 위치(index)parameter=value
로 필요한 파라미터의 값을 적는다.&
를 붙여서 여러개의 파라미터를 넘길 수 있다.Path Parameter에 대한 정보는 match
객체 안에 담겨있었듯이, 쿼리스트링에 대한 정보는 location
객체 안에 담겨있다.
따라서 url에서 쿼리 스트링에 대한 정보를 받아와서, 해당 정보를 통해 데이터를 요청할 수 있다.
fetch(`${API}${this.props.location.search}`)
.then(res => res.json())
.then(res => ...)