😡 Redux의 필요성을 느꼈던 경험
암만 봐도 너무 어려웠던 Redux..전에는 리액트조차 아예 노베인 상태였어서 시간상 리덕스까지 배워서 바로 졸업프로젝트에 적용하기엔 무리였다. 그 후에 프로젝트를 할 때에도 계속 학기중인데다 시험기간까지 겹쳐서 도저히 배울 시간이 안나 적용을 못한 채로 진행했었는데, redux없이 프로젝트를 하다보니 확실히 상태 관리의 필요성을 느꼈다.
바로 이 그림의 문제였다. props를 이용해 데이터를 전달했더니 점점 페이지 depth가 깊어질수록 state,props가 변할 때마다 그걸 상위/하위 컴포넌트에서 처리하는 코드가 줄줄히 늘어났다. 그러다보니 디버깅을 할때나 어떤 부분을 고칠 때 문제가 안생기나 여기저기 다 확인해야 해서 너무 번거로웠다. 그게 프로젝트 끝난 이후에도 맘에 남아서 무조건 방학에 리덕스 공부하고 리팩토링 해야지 다짐했다가 이번에 방학을 하자마자 Redux 영상을 엄청 찾아봤고, 드디어 좀 이해한 내용들을 정리하고 넘어가야겠다.
(출처:생활코딩 redux 강의 내용)
Redux는 state를 효율적으로 관리해주는 React의 Library로, 각 Component별 state를 분리시켜 효율적으로 작업 및 관리할 수 있다. 이전 Project까진 Main Component에 state를 생성하여 자식 Component와 연결한 후, Component별로 전달하고 전달하여 사용하였다. 그러나 Redux를 사용하면 연결된 Component사이에서 옮길필요없이 state를 전달 할 수 있다.
출처: https://aridom.tistory.com/37
store : store에는 관리할 모든 state들이 들어간다.
state : state(상태)가 저장되는 곳. 직접 접근해 변경 불가능하고 값을 읽는 것만 가능.
reducer : 새로운 state를 return해주는 함수, 우리가 만들어줘야 하는 부분
action : 이벤트가 실행되면 dispatch에 전달해줄 action에 대한 내용을 담은 객체
dispatch : state값을 변경한다. action 객체를 담고,이 action과 현재의 state값을 reducer로 전달.
getState : state값을 가져온다.
subscribe : state값이 변경되었을 때 구동 될 함수들을 저장.
store.subscribe(render) // state가 변할때마다 render가 호출된다.
render : state값을 참조하여 ui를 만들어주는 코드