초등학생도 이해하는 리덕스 redux

림피터·2022년 6월 12일
0

개똥같은 리덕스

프론트 엔드 부트캠프 중 찾아온 첫번째 시련은 리덕스였다.
"음...도대체 왜 이렇게까지 어렵게 해야될까?"
그러다 redux-thunk를 만났고 내 멘탈은 바사삭 부서졌다.
부서진 멘탈을 겨우겨우 부여 잡고 며칠만에...이제는 다른 사람에게 설명할 수 있을 정도로 리덕스를 이해는 하게 되었다....

리덕스를 도대체 왜 쓸까?

나는 이게 처음에 젤 이해가 안됐다. 리덕스를 이해하려면 도대체 이걸 왜 쓸까에 대한 이유에 대답 할 수 있어야 한다.
리덕스는 전역으로 상태를 관리하기 위한 다양한 상태 관리 툴 중에 하나다.
이 글의 주요 주제는 아니니, 자세히 다루지는 않겠지만, 리액트는 상태를 관리하고 전달할때 자식 컴포넌트에서 부모 컴포넌트로 상태(데이터)를 전달할 수 없는 단방향 데이터 바인딩 방식으로 설계되어 있다.
이는 여러가지 불편함을 주고 이를 해결하기 위해 "전역"에서 데이터를 활용하기 위해 다양한 상태 관리 툴들을 사용하며, 리덕스도 그중 유명한 녀석들 중 하나다.

근데 왜 이렇게 어렵게 쓸까?

리덕스를 한 번이라도 공부해본 사람은 알겠지만, 액션 타입, 액션 객체, 액션 생성 함수로 시작해서 subscribe, dispatch 등등 redux를 공부하기 전에는 도통 들어 보지 못한 개념들을 쏟아낸다.
이렇게 어렵고 새로운 용어들을 써가면서 도대체 왜 이렇게 어렵게 관리하는 걸까?

답은,
"상태 관리를 어렵게 할려고 쓰는 것이다"

이게 뭔 개똥같은 소리냐고 반문할 수도 있겠지만, 10초만 더 읽어보시라.

리덕스는 상태의 변경(데이터의 변경)을 일부러 어렵게 해놓았다. 왜냐하면 상태를 이렇게 어렵게 변경할 수 있도록 관리하지 않으면 스파게티 면처럼 꼬인 코드들을 관리하는 것이 더 힘들기 때문이다.
그래서 리덕스는 일부러 상태를 변경하기 불편하게 해둔게 맞다. 불편하게도 리덕스는 리덕스에서 알려주는 방식인 몇가지 룰에 의해서만 상태를 변경 관리 할 수 있다.

초등학생도 쉽게 이해하게 해준다며!???

아래 내용대로 이해하면 된다.
1. 상태는 Store 에 담겨져 있다(스토어는 실제로 리듀서들+@의 합인데 몰라도 쓰는데 크게 지장없다).
2. 내가 바꾸고 싶은건 액션이다(숫자에 일을 더해라, 빼라 등등 ).
type키워드(액션의 이름 같은 것)를 꼭 포함한 액션 객체를 반환하는 액션 생성 함수를 만든다. 이것이 리듀서에 의해서 실제로 액션이 될 예정이다.
이 얼마나 (주니어 개발자들에게)개똥같은 짓인가. 액션 객체를 리터럴로 생성하는게 아니라, 이를 생성하는 함수를 만들다니?
3. 액션 생성함수는 사실 전달자일 뿐이며, 전달을 할때는 꼭 dispatch로 전달해야 한다. dispatch안에 포함되어 오지 않는 것은 변경이 되더라도 보여주지 않는다. 시키는 대로만 전달해야 된다.
4. 그럼 리듀서는 정해진 규칙에 맞게 너의 요청을 받아서 실제로 data를 변경 해서 제대로 보여줄것이다. 누구에게? subscribe 하고 있는 애들에게, 그래서 "구독 좋아요"를 잘해야...(그런데 실제로 많은 사람들이 쓰는 환경인 react-redux 에서는 subscribe를 대신 해줘서 쓸일은 많이 없다)

끝이다.

리덕스로 상태 관리를 할때 상태에 변화를 주고 싶으면 위 대로만 하면 된다.

쭈니어라 틀린내요 있을수 있어요 빽태클 환영이요. 이걸로 이해가 안된다면 댓글달아주세요. 1대1로 이해시켜드림.

profile
"왜"에 대답할 수 있는 개발자가 되고 싶습니다.

0개의 댓글