2021.05.09 데일리 회고

천영석·2021년 5월 9일
1

redux 공부를 했다. 자바스크립트를 처음 배우고 한 달 정도 지났을 때, next로 트위터 클론코딩을 하는 제로초의 강의를 들었어서 redux는 한 번은 봤던 개념이었다. 그 땐 정말 어렵다고 느꼈고, redux에서 사용하는 switch와 action, state가 모두 redux의 문법인 줄 알고 따라 치기만 했다. redux를 공부해보니 그 때가 생각나면서 감회가 새로웠다. 많이 발전했다는 것을 느꼈다.

내가 공부한 개념을 설명해보면, redux는 전역으로 상태를 관리하기 위한 도구이다. 그러기 위해 강제되는 것이 있는데, 불변성 유지와 action, reducer, store이다. 게다가 전역으로 상태를 관리하는 것이기 때문에 store는 한 개이다. store는 한 개이지만 reducer는 여러 개를 만들어서 합칠 수 있기 때문에 개발을 하면서 문제가 되지는 않는다.

reducer를 통해 store에 저장된 전역 상태를 업데이트한다. 그러기 위해 인자로 state와 action을 받고, 넘어온 action의 type으로 어떤 상태를 변경해야 하는지 찾는다. state는 처음 한 번 initialState를 보내줘야 하고, 그 뒤로는 dispatch가 발생할 때, dispatch에서 현재의 상태를 알아서 보내준다. 아마도 클로저로 보관하면서 업데이트하는 것 같다. 결국 업데이트를 위해서는 dispatch를 해야 한다.

action은 함수나 객체이며 컨벤션으로 type과 payload를 출력한다. reducer에서 어떤 일을 하도록 알려주는 것으로 그다지 어렵지 않은 개념이다.

subscribe도 있는데, 옵저버 패턴에서 사용해본 것과 같다. subscribe로 등록해놓은 콜백 함수가 dispatch될 때마다 실행된다.

즉, 실행 순서는 dispatch(action) => reducer => currentState update => listener 알림으로 진행된다. 결국 단방향 움직임이기 때문에 잘만 생각하면 그다지 어렵지 않은 것을 알 수 있다. 미들웨어가 들어가면 살짝 복잡해지지만 아직 공부하지는 않았다. 내일 해보려고 한다.

새로운 개념에 대해 공부하면서, 내부 구현도 살짝 알아봤는데 알아들을 수 있는 내용이 많아서 너무 재밌었다. 알아들을 수 있는 내용이 점점 늘어난다는 것이 코딩의 즐거움인 것 같다.

profile
느려도 꾸준히 발전하려고 노력하는 사람입니다.

0개의 댓글