-
[React] withRouter & JS로 SPA 방식 라우팅Front End/React 2021. 10. 12. 16:02
# withRouter
- Higher-order Component 로 라우터에 의해서 호출된 컴포넌트가 아니어도 match, location, history 객체에 접근 가능하게 해준다.
- 하위 컴포넌트에서 상위 계층간의 거리가 멀어도 match, location, history를 안전하게 받을 수 있다.
(props 로 열심히 전달하지 않아도 된다.)
# JS로 SPA 방식으로 라우팅하기 + withRouter 사용 예시
- <LoginButton {...props} /> 로 넘겨 줘도 되나, 계층간의 거리가 멀어지면 해당방식은 오류의 근원이 됨.
// src/pages/Login.jsx import LoginButton from '../components/LoginButton'; export default function Login() { return ( <div> <h2>This is Login Page.</h2> <LoginButton /> {/*LoginButton 컴포넌트에 props 를 주지않았음..!*/} </div> ); } COPY // src/components/LoginButton.jsx import { withRouter } from "react-router"; export default withRouter(function LoginButton(props){ function login(){ setTimeout(()=>{ props.history.push("/home"); //해당부분이 SPA 방식으로 라우팅하는 JS코드 },1000); } return( <button onClick={login}>Start Login</button> ); });
728x90'Front End > React' 카테고리의 다른 글
[React] npx create-react-app 에러 (404 에러 해결방법) (0) 2021.11.25 [React] Can't resolve 'react-router-dom' 해결 방법 (0) 2021.11.25 [React] 라우팅 (Route, Link, NavLink, Switch) + QueryParameter (0) 2021.10.12 [React] 리액트의 라우팅과 SPA(Single Page Application) (0) 2021.10.12 [React] 유용한 리액트 관련 익스텐션 및 플러그인 모음 (0) 2021.10.12