본문 바로가기

공부한 내용/React Native

Redux 리덕스란?

Redux란?

리덕스는 리액트를 위한

state management 툴이다.


일단, 

리덕스가 필요한 이유는

컴포넌트는 local state를 갖고 있고, 앱은 global state를 갖고있기 때문이다.

예를 들면 인스타그램 사진이 하트를 만든다.

하트는 2개의 state가 있어. 

하나는 좋아요를 눌렀을때(빨간색),

다른 하나는 좋아요를 안눌렀을떄(하트는 회색)

보다시피 이 컴포넌트는 local state가 있는거다.

문제는 앱은 많은 컴포넌트를 기반으로 지어졌는데,

또한 동시에 global state를 갖고 있다.

global state의 예시는 유저가 로그인을 했느냐, 안했느냐의 여부다.

global state 에서는 모든 컴포넌트가 영향을 받는다.

유저가 로그인을 했느냐 안했느냐에 따라 앱이 어떻게 보이는지도 다르다.

즉 global state와 local state는 둘다 매우 다르다.

여기서 state는 공유되어야한다는 것은, 왜냐면 유저가 로그인 했는지 안했는지 여부를 

모든 컴포넌트들이 알기를 원하기 때문이다.

그래서 해당 정보를 많은 컴포넌트에서 공유하고 싶다.

예를 들면 하트 컴포넌트는 이를 댓글 혹시 네비게이션 컴포넌트에게 정보를 전달할 필요는 없다.

그러나 글로벌에선 유저가 로그인을 했는지 안했는지 여부는 알아야한다.

이렇게 공유된 state를 저장하는 방법이 리덕스다.

리덕스의 역할은 바로! 

global shared state을 저장하는 것.

리덕스는 state 컨테이너다.

오브젝트 = state = 스토어

오브젝트 안의 데이터를 변경하려면 '액션'을 보내야한다.

액션을 받는 사람은 'reducer'이고 이는 액션을 살펴본 후에,

데이터를 변경해줄 것이다.