리액트 개발을 하던 중, props.history가 자식 컴포넌트에서 동작하지 않는 상황에 마주했습니다.
App.js에서 { withRouter } from "react-router"로 묶어주고, App을 withRouter로 감싸줍니다.
그리고,
index.js에서 { BrowserRouter } from "react-router-dom"으로 묶어주면, props에 history 객체가 생성되는데요.
이를 이용해서, 뒤로가기, Link걸기 등의 작업을 할 수 있습니다.
그런데, App.js -> Home -> Header -> Menu 이런식으로 자식의 자식의 자식 컴포넌트로 이어지면,
props.hisotry객체가 전달되지 않았습니다.
이런 경우 해결할 수 있는 방법으로 useHistory를 이용하면 됩니다.
import { useHistory } from "react-router-dom";
const histroy = useHistory();
useEffect(()=> {
console.log(history);
}, [])
위처럼, 훅을 이용하면 쉽게 props에 history 객체를 이용해 여러가지 작업을 수행할 수 있습니다.
위처럼 입력해서 검사창을 열어 콘솔을 확인했을 때, 다음과 같이 출력되면 성공입니다 !
'Web Development > Front-end' 카테고리의 다른 글
Reset CSS File (0) | 2020.11.13 |
---|---|
2. CSS (0) | 2020.11.09 |
[Javascript] 곱등이게임 (0) | 2020.10.31 |
[Zerocho-14] EventListener(keyup&down) & 증감연산자(전위형/후위형) & Blocking / Non-Blocking & 이벤트루프 (0) | 2020.10.30 |
[Javascript] 계산기만들기 (0) | 2020.10.30 |