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;
App.js
에서 routing을 정의
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
을 통해 접속하면 원하는 결과를 얻을 수 있다.
'Web 개발 > React' 카테고리의 다른 글
[React] TypeError: Cannot read property 'createElement' of undefined (0) | 2020.02.09 |
---|---|
[React] 서브 라우트 (sub route) 정의하는 방법 (+코드 예제) (0) | 2020.02.09 |
[React ] Routing 사용 예제 (Route, Link) (0) | 2020.02.09 |
[React] 새로운 프로젝트 생성시 무조건 ESLint, Prettier 적용 (자동으로 코드 포맷 설정) (0) | 2020.02.09 |
[React] 환경 구성 (nvm, node, yarn, homebrew) MacOS (0) | 2020.02.09 |