2019. 4. 30.
이 글은 아래 버전을 기준으로 작성되었다.
"mobx-react-router": "^4.0.7",
"react-hot-loader": "^4.8.0",
"react-router": "^5.0.0",
문제 현상은 다음과 같다.
Warning: You cannot change <Router history>
해결방법은 react-hot-loader의 hot
을 각 route로 옮기는 것이다.
원래는 react-router의 <Router />
와 MobX <Provider />
를 포함한 최상단 component인 App에 hot을 적용했었다. 이것을 각 route (<Route />
의 component prop으로 넘겨주는 Component)로 옮겼다. hot
이 RouterStore가 들어가는 MobX의 <Provider />
나, <Router />
상위에 적용된 것이 문제인 것 같다.
react-hot-loader의 공식 문서에서는 hot
의 위치를 다음과 같이 추천한다. 여기에 MobX나 react-router 얘기는 없지만, redux store creation와 비슷한 경우로 생각할 수 있겠다.
To make RHL more reliable and safe, please place hot
below (ie somewhere in imported modules):
You may(but it’s not required) place hot
to the every route/page/feature/lazy chunk, thus make updates more scoped.
웹 프론트엔드, 음악, 책 등등
by 조용준