Redux...?

ChungKyu Kim·2022년 3월 31일
0

TIL

목록 보기
35/52

오케
내가 아는 Redux는 상태 관리 라이브러리 끗.ㅎ

이제부터 알아보자

Redux

컴포넌트 상태 업데이트 관리 라이브러리


이고잉(생활코딩)님의 리덕스 여행지도

요런 맵은 멍청한 나를 이해시키기위해 큰 도움이 된다.

Action
상태에 변화가 일어나는 과정.
액션은 객체로 표현되며 반드시, 무조건 type이 있어야 한다.

reducer
리듀서는 기존state와 액션객체를 받고 필요에 의해서 state를 갱신해 리턴한다.

store
하나의 프로젝트에 하나의 스토어를 가질수 있다.
상태가 담긴 곳.

dispatch
state를 업데이트하는 곳, 액션객체를 넘겨주는 곳

subscribe
좋아요 구독 알람설정까지의 구독ㅎㅎ
상태가 업데이트 될 때마다 호출되어 자동으로 변화시킨다.

리덕스를 사용하는 것은 store를 만들어서 store의 상태를 바꾸는 것이다.

dispatch를 통해 action이 들어오면 reducer에 의해서 state값을 변경한다

이곳에서 리덕스를 사용해보며 이해를 도왔다.

진짜 리덕스는 프로젝트를 하면서도 두려움의 대상이었는데, 뭔가 이해가 되고있다는 것에 흥미를 느꼈다.

장점

  • 단방향 모델링. action이 dispatch될 때 기록이남는다. 타임트레블링을 사용할 수 있다.
  • store에서 상태를 한번에 관리한다. (상태중앙화) 전역 상태관리에 효과적
  • 읽기전용상태이다. 이전 상태로 돌아가고 싶다면 현재 상태에 덮어씌우면 되는 편리함이 있다.

->

단점

  • 필수적으로 적어야하는 코드들이 있어 초기에는 복잡할 수 있다.

리덕스 원칙
1.하나의 애플리케이션 안에는 하나의 스토어만 사용하자는 원칙이다. 이렇게 하면 애플리케이션의 디버깅이 쉬워지고 서버와의 직렬화가 될 수 있고 쉽게 클라이언트에서 데이터를 받아들여올 수 있게 된다.
2. 상태를 변화시키는 방법은 오직 액션을 일으키는 것이다. 이것은 상태를 변화시키는 의도를 정확하게 표현할 수 있고, 상태 변경에 대한 추적이 용이해지게 된다.
3. 변화를 일으키는 리듀서 함수는 순수한 함수여야 한다. 순수 함수는 다음과 같은 조건을 만족한다.

*순수함수
순수함수를 한마디로 정의해보자면 동일한 인자가 주어졌을 때 항상 동일한 결과를 반환해야 하며 외부의 상태를 변경하지 않는 함수입니다. 쉽게 말하면 함수 내 변수 외에 외부의 값을 참조, 의존하거나 변경하지 않아야 한다.

순수함수여야 하는 이유

  • 두 개의 자바스크립트를 비교하려면 깊은비교해야 하는데 객체의 크기가 크거나 횟수가 많을 경우 너무 무거운 작업이 된다.

그래서 policy로 순수함수를 써주면 항상 새로운객체, 즉 새로운 상태가 나오는 것이다.

리덕스를 하며 flux MVC개념이 겹쳐지기도 했다.
일단은 여기까지..

profile
프리비엣!

0개의 댓글