Parameter, Query Example
/user/lee
/search?keyword="hi
위에서 user에 lee
를 넘기는 방식이 parameter로 특정 사용자를 조회할때 사용하고, query는 키워드를 검색할때 페이지에 필요한 옵션을 전달할 때 사용을 하게 된다.
URL Parameter
match
라는 객체안의 params
값을 참조
import React from 'react';
const data = {
seoul: {
name: '서울',
location: 'seoul'
},
gyonggi: {
name: '경기도',
location: 'gyonngi-do'
}
};
const Location = ({ match }) => {
const { cityname } = match.params;
const city = data[cityname];
if (!city) {
return (
<div>
<h1> {cityname} 은 존재하지 않는다.</h1>
</div>
);
}
return (
<div>
<h1>
{' '}
{cityname} ({city.name})
</h1>
<p>{city.location}</p>
</div>
);
};
export default Location;
import React from 'react';
import { Route, Link } from 'react-router-dom';
import './App.css';
import Home from './components/Home';
import Search from './components/Search';
import Location from './components/Location';
const App = () => {
return (
<div>
<Link to="/">홈</Link>
<Link to="/search">검색</Link>
<Link to="/location/seoul">서울</Link>
<Link to="/location/gyonngi">경기</Link>
<Link to="/location/star">별나라</Link>
<Route path="/" component={Home} exact={true}></Route>
<Route path="/search" component={Search}></Route>
<Route path="/location/:cityname" component={Location}></Route>
</div>
);
};
export default App;
URL 쿼리
- url 쿼리의 경우에는
match
와 다르게 location
의 객체에 있는 값을 조회가 가능하다.
/search?keyword=hi
의 url을 호출했을때 location의 객체의 형태는 아래와 같다.
{
"pathname": "/search",
"search": "?keyword=hi"
}
- query 문자열을 객체로 변환할때는
qs
의 라이브러리를 사용한다
yarn add qs
import React from 'react';
import qs from 'qs';
const Search = ({ location }) => {
// ?keyword=
const query = qs.parse(location.search, {
ignoreQueryPrefix: true // prefix: ?
});
const keyword = query.keyword;
return (
<div>
<h1>Search</h1>
<p> 검색 쿼리는 {keyword}</p>
</div>
);
};
export default Search;
- 다음과 같이 추가한 이후에 url을
http://localhost:3000/search?keyword=hi
을 통해 접속하면 원하는 결과를 얻을 수 있다.