인프런 커뮤니티 질문&답변
리덕스의 동작원리가 조금 헷갈립니다
작성
·
430
0
useSelector((state)=>state.user.isLoggedIn)의 코드가 잘 이해가 가지 않아서 질문합니다. 동작은 잘됩니다. 하지만 동작이 왜 되는지 잘모르겠습니다. 왜냐하면 state를 import하지 않아서 위 코드에서 state를 어디서 읽어오는지를 아무리 생각해도 잘 모르겠습니다.
나름대로 이유를 생각해봤을때는 _app.js파일에 wrapper.withRedux로 감싸놓아 모든파일에 적용된게 아닐까 생각이 드는데 wrapper.withRedux의 역할도 정확히 모르겠습니다.. 위에 질문과 wrapper.writRedux의 역할을 설명해주실수 있으실까요?
답변 1
0
제로초(조현영)
지식공유자
일단 wrapper.withRedux가 react-redux의 Provider 역할을 하는 게 맞습니다.
Provider는 context-api를 내부에 쓰고 있어서 어떤 컴포넌트에서든 스토어의 값을 쓸 수 있게 해줍니다. 스토어의 값을 state라고 합니다.
useSelector는 커스텀훅으로 훅 내부에서 useContext같은 context-api 값 불러오는 기능을 사용하고 있습니다. 거기에 있는 state에서 state.user.isLoggedIn 값을 가져오라고 지시하는 게 저기 useSelector 훅의 역할입니다.





Provider는 context-api를 내부에 쓰고 있다는게 조금 이해가 가질 않습니다. 리덕스와 context api는 독립적인 상태관리라이브러리로 이해하고 있습니다. Provider은 redux에 포함되어있는데 어떻게 context api가 내부에 포함되어있는지가 궁금합니다
p.s 제가 문장력이 부족해서 두서없이 작성하고 질문해서 죄송합니다.