React Router 지원 Hooks, 정리 사용 방법

8864 단어 react-routerReact

개요

  • ReactRouter는 v5.1에서 Hooks
  • 지원
  • 이전react-router + React Hooks 이 글은 use-react-router의 사용법
  • 을 소개했다
  • , React Router 자체가 Hooks를 지원하기 때문에 앞으로 제작할 때 이 글의 방법으로 설치할 것
  • 예제 코드

  • ReactRouter Hooks를 사용한 간단한 예시
  • mkdir react-router-with-hook
    cd react-router-with-hook
    yarn init -y
    yarn add react react-dom react-router-dom
    touch index.html index.js
    
    index.html
    <div id="root"></div>
    <script src="./index.js"></script>
    
    index.js
    import React from 'react';
    import ReactDOM from 'react-dom';
    import {
      BrowserRouter as Router,
      Route,
      Switch,
      useParams,
      useHistory,
      useLocation,
    } from 'react-router-dom';
    
    function Hello() {
      const history = useHistory();
      return (
        <div>
          <h1>Hello</h1>
          <button
            onClick={() => history.push('/hello/react-router?message=hooks#test')}
          >
            Next
          </button>
        </div>
      );
    }
    
    function HelloSomeone() {
      const history = useHistory();
      const location = useLocation();
      const { name } = useParams();
      return (
        <div>
          <h1>Hello {name} !</h1>
          <p>pathname: {location.pathname}</p>
          <p>search: {location.search}</p>
          <p>hash: {location.hash}</p>
          <button onClick={() => history.goBack()}>Go Back</button>
        </div>
      );
    }
    
    function App() {
      return (
        <Router>
          <Switch>
            <Route path="/" exact>
              <Hello />
            </Route>
            <Route path="/hello/:name" exact>
              <HelloSomeone />
            </Route>
          </Switch>
        </Router>
      );
    }
    
    ReactDOM.render(<App />, document.getElementById('root'));
    
  • 다음 명령을 통해 시작
  • npx parcel-bundler ./index.html
    

    코드 설명


    useHistory

  • 페이지 마이그레이션 시 사용history
  • const history = useHistory()
  • history.push('/')history.goBack() 등에서 사용
  • useLocation

  • 현재 페이지 URL의 path와query 등 정보 얻기
  • const location = useLocation()
  • location.pathlocation.search 등에서 사용
  • useParams

  • URL 경로의 동적 변화 부분 값 가져오기
  • <Route path="/hello/:name">로 정의된 페이지에 액세스하는 경우
  • const { name } = useParams();이면 :name 부분의 값
  • 을 얻을 수 있습니다.

    총결산

  • Hooks로 쓸 수 있다면 이전보다 HOC로 쓰는 것이 시야가 더 좋다
  • 과 일시 사용use-react-router 규격은 조금 다르지만 불협화음은 없는 것 같다
  • 좋은 웹페이지 즐겨찾기