나는 상태관리 라이브러리로 Recoil 을 선택해 공부하고 사용해왔다.
그런데 이번에 참여한 팀 프로젝트에서 Redux 를 사용한다고하여,
이번 기회에 공부하게되었다.
아무래도 Recoil 보다 Redux 가 많이 사용되고 있기에 공부해야지라고 생각하고 있었는데,
이번 기회에 하게 되어 너무 좋다!
거두절미하고, 시작!
❗리덕스 - 공식
❗리액트에서 리덕스 사용하기 - 공식
리덕스는 오픈 소스 자바스크립트 라이브러리의 일종으로, state를 이용해 웹 사이트 혹은 애플리케이션의 상태 관리를 해줄 목적으로 사용한다.(=>상태관리 라이브러리)
Redux 는 상태관리 라이브러리의 하나로, 인기있는 상태관리 라이브러리이다.
자바스크립트 상태관리 라이브러리이지만, 리액트에서 사용하는 것을 많이 보았다.
Recoil 을 공부하고 사용할 때도 느꼈지만, 프로젝트가 커지고 그만큼 주고 받는 값들이 많아질 수록
상태관리 라이브러리 사용은 필수라고 생각한다.
리액트는 주로 부모 컴포넌트 안에 자식 컴포넌트가 존재하고 state 로 component 의 값을 관리한다.
부모 컴포넌트의 state 데이터를 자식 컴포넌트로 전달할 수 있으나,
자식 컴포넌트들 간의 다이렉트 데이터 전달이 불가능하다.
이말은 즉, 자식 컴포넌트들이 많아진다면 계속해서 상위 컴포넌트에서 하위 컴포넌트로 데이터를 내려주어야하는 상황이 발생한다는 거다. Props drillling 이슈가 발생한다는 것.
이런 복잡성을 해결해주는 것이 상태관리 라이브러리이다.
전역 상태 저장소를 제공해주어 Props drilling 이슈를 해결해주고, 상태를 관리해주는 각종 툴을 제공해준다.
setState
메소드를 활용해야만 상태변경이 가능하다.dispatch()
메소드가 Reducer 로 전달한 상태값을 여기에 저장한다.dispatch()
의 파라미터로 전달될 데이터, 자바스크립트 객체이다.type
프로퍼티를 무조건 가지고 있어야한다.dispatch()
메소드를 사용해야한다.즉,
Action
객체가 dispatch()
메소드에 전달 > dispatch(액션)
를 통해 Reducer
를 호출 > Reducer
는 새로운 Store
생성
dispatch
가 실행되면 파라미터로 전달받은 Action 값이 Reducer 의 두 번째 파라미터 객체로 전달된다. 그럼 Reducer 안에 있는 코드들로 인하여 Store 상태값이 저장된다.