관리 메뉴

SW

[React-Native] Redux 본문

대학교/FE

[React-Native] Redux

SWKo 2020. 3. 2. 13:27

0. 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는 object이다. 그 object의 데이터를 변경하고 싶다면 액션을 보내야 한다. 여기 reducer라는 것이 있고 reducer가 액션들을 받고 object를 변경해 줄것이다.
  • 결론적으로, store는 object이고 object안의 데이터를 변경하려면 '액션'을 보내야 한다. 액션을 받는 사람은 'reducer'이고 이는 액션을 살펴본 후에, 데이터를 변경해준다.
  • 리덕스는 쉬운 앱 만들기를 헷갈리게 할수는 있어도 복잡한 앱을 쉽게 만들게 해준다.

'대학교 > FE' 카테고리의 다른 글

[React-Native] (2) 리액트 네이티브 다루기  (0) 2020.03.04
[React-Native] (1) React Native란 무엇인가?  (0) 2020.03.03
[React Native] Weather App(2)  (0) 2020.02.28
[React Native] Weather App(1)  (0) 2020.02.28
[React Native] Flexbox  (0) 2020.02.28
Comments