Written on
·
167
1
좋은 강의 감사합니다.
강의 들으면서 궁금한게 생겨서 질문드립니다.
react 첫강의 들을때 HOC auth 때문에 withrouter를 사용한것으로 알고있습니다.
이번 강의에서는 withrouter를 사용 안하시는데 그 이유가 react 부분에 auth 코드에서 return 을 할때 props를 자식 컴포넌트에 넘겨줘서 withrouter를 안쓰는 것인가요?
아니면 다른 이유가 있다면 무엇인지 궁금합니다
Answer 1
3
안녕하세요
우선 withRouter를 사용하는 이유에 대해서 생각해보면
this.props.history에 접근을 하기 위해서 입니다.
이것을 쓸수 있어야지 this.props.history.push('/') 와 같은 기능을 사용할수 있게 됩니다.
App.js에 보면
저희가 Route들을 나열해놓았죠
<Route component={LandingPage} /> 이런식으로요
이렇게 Route에 감싸져있는 컴포넌트들은 this.props.history에 자동으로 접근이 가능하답니다.
하지만 그렇지 않은 컴포넌트들 주로 자녀 컴포넌트들이 겠죠 ... LandingPage안에 쓰인 컴포넌트는 Route에 감싸져있지 않습니다.
그리기에 그 자녀컴포넌트 안에서 this.props.history를 쓰려하면 접근하지 못하기에 에러가 납니다.
이러한 문제를 해결하기위해서
export default withRouter(자녀컴포넌트이름) 이런식으로 해주는 것입니다 ^ ^