React - routing


React routing 에 대한 메모

Routing

기본적으로 SPA 프레임워크의 경우 화면이 이동하지만 해당 페이지의 이동은 서버로부터 요청 받은 새로운 페이지가 아니다. 클라이언트단에서 컴포넌트를 변경하며 화면 변화가 일어나고 이에 새로운 페이지가 나타난것 처럼 보이는 것 뿐이다.

이러한 현상을 Routing 이라고 말할 수 있고, React 에서는 많은 라이브러리가 있지만 많이 사용되는 있는 라이브러리는 아래와 같다.

react-router-dom: facebook 공싱 라이브러리는 아님 하지만 대표적인 라이브러리

사용 예

간단하게 사용하는 방법은 아래와 같다. BrowserRouter 로 변경이 일어날 부분들을 감싸고 Route 를 사용하여 만들면 된다. 이는 실로 간단하게 작성한건고 깊은 부분은 찾아보자.

exact 는 완전 경로가 일치할 때만 보여준다.

import { BrowserRouter, Route } from "react-router-dom";
import About from "./pages/About";
import Home from "./pages/Home";
import Profile from "./pages/Profile";

function App() {
  return (
    <BrowserRouter>
      <Route path="/" exact component={Home} />
      <Route path="/profile" exact component={Profile} />
      <Route path="/profile/:id" component={Profile} />
      <Route path="/about" component={About} />
    </BrowserRouter>
  );
}

export default App;

queryString, pathVariable 사용

pathVariable 의 경우는 props.match.paramqueryStringprops.location.search 에 있으나 꺼내쓰기 번거로운 형태이므로 URLSearchParams 을 쓰거나, query-string 라이브러리 사용을 권장한다.

import queryString from "query-string";

export default function About(props) {
  const searchParams = props.location.search;
  const id = props.match.params.id;

  // const params = new URLSearchParams(searchParams);
  const query = queryString.parse(searchParams);
  console.log(query);
  return (
    <div>
      <h2>About Page</h2>
      {query.name && <p>{query.name}</p>}
    </div>
  );
}