Front End/React
[React] withRouter & JS로 SPA 방식 라우팅
DevPing9_
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