1 분 소요

react-router-dom의 useHistory Hooks를 사용하여 경로 설정을 해보도록 하겠습니다.

일반적인 useHistory 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import React from "react";
import {
  BrowserRouter,
  Switch,
  Route,
  Redirect,
  useHistory,
} from "react-router-dom";

// App 컴포넌트
const App = () => {
return (
    <BrowserRouter>
      <Buttons />
      {/* 라우팅 */}
      <Switch>
        <Route exact path="/about" component={About} />
        <Route exact path="/skills" component={Skills} />
        <Route exact path="/projects" component={Projects} />
        <Route path="/" render={() => <Redirect to="about" />} />
      </Switch>
    </BrowserRouter>
  );
};

const history = useHistory();

return ( 
    <div>
      <button onClick={() => history.push("/about")}>About</button>
      <button onClick={() => history.push("/skills")}>Skills</button>
      <button onClick={() => history.push("/projects")}>Project</button>
    </div>
  );
};

// 기타 컴포넌트들
const About = () => <div>This is About Component</div>;
const Skills = () => <div>This is Skills Component</div>;
const Projects = () => <div>This is Projects Component</div>;

export default App;
1
2
3
4
5
import { useHistory } from "react-router";

const history = useHistory();

<button onClick={() => {history.push("/Next")}} />

보통 위와 같은 형태로 history.push()를 사용합니다.

props 넘기기

1
2
3
4
5
6
7
8
import { useHistory } from "react-router";

const history = useHistory();

 <button onClick={() => {history.push({
   pathname: "/Next",
   state: {displays: displays}
  })}} />

props를 넘기고 싶은 경우에는 위와 같이 사용할 수 있습니다.

props 받기

1
2
3
4
5
import { useLocation } from "react-router";

const location = useLocation();

const item = location.state.displays;

props를 받아서 사용하고 싶은 경우에는 위와 같이 useLocation을 사용하여 받으면 됩니다. useLocation은 현재 페이지에 대한 url 정보를 알려주는 Hooks로 url이 바뀔 때마다 새로운 location이 반환됩니다.

useLocation의 내용물

  1. pathname : 현재 경로
  2. search: ?부터 나오는 문자열 ex) ?id=1
  3. hash : #부터 나오는 문자열 ex) #id=1 (search와 hash 동시에 사용할 수 있다!)
  4. state: 숨겨서 보내는 정보
  5. key: 고유한 문자열 키.

✔️ 참고 사이트

🔔포스팅 공지
개인 공부 기록용 블로그 입니다.
잘못된 부분이 있을 시 메일이나 댓글로 지적해주시면 감사드리겠습니다 :)

댓글남기기