본문 바로가기
React

Redux-상태관리

by 엉덩이가 무거운 개발자 2021. 7. 12.



action 

상태를  어떻게 바꿀지에 대한 행동 .

type 값은 필수.

payload : '교체할 상태 값'.

액션 타입을 별도 관리하는 파일을 만들어 상수(constant)로 관리하는 것이 유지 보수 하기 좋다

 

reducer

state,action을 매개변수로 받고 새로운 state를 반환 후 -> store로 전달.

 


Redux 의 3가지 규칙

1.하나의 애플리케이션엔 하나의 스토어만 있어야한다.

 

2.상태는 불변성을 유지해야한다. (좋은 성능을 지켜내기 위함)

객체를 참조해서 수정하지말자 member.isLoggedIn = true; (x)

read 만하자 (ㅇ)

이전의 state와 현재의 state가 달라야  추적가능.

참조관계가 유지된다면 history 가 안남는다.

 

3.리듀서는 초기 stateaction을 전달 받아 '이전 상태'를 '다음 상태'로 교체후 반환한다.

  주어진 상태를 수정하는 것이 아니라,

  새로운 상태교체하는 것이 중요.

 (이전상태,액션) => return 다음상태

  즉, 리듀서는 반드시 '순수한 함수' 여야 한다.

내가 바꾸고싶은건 정확하게 써주기

 



순수 함수란?

순수 함수는 반환(reture) 값이 전달 인자 (argument) 값 에만 의존하는 함수를 말한다.

변형을 가하면 안된다

const aFunction = x => x * x (o)

const arrayFunction = items => items.map(square) (o)

 

 

순수하지 않은 함수는 데이터베이스 또는 네트워크 통신 및 DOM 조작과 같은 경우를 말한다.

 

 

리듀서(함수)는 순수해야 한다. 순수함을 잃어버리게 되면 사이드 이펙트를 발생시킬 수 있다.

  • 전달 받은 매개변수 state, action에 변형을 가하면 안된다.-> 새로운 배열, 새로운 객체로 교체하자!
  • 네트워킹(API 호출 ← 비동기 통신) 또는 라우팅을 변경하면 안된다.
  • 반드시 반환 값은 새로운 상태(state)여야한다.

ducks 패턴

 


-리덕스 정리-

데이터를 중앙에서 관리한다. (중앙저장소)

데이터 조회,수정,추가,삭제 가능.

 

데이터를 바꾸려면 노예(액션)가 필요하다. (상태를 어떻게 무엇을 바꿀것인지에 대한 정보)

 

dispatch() --> 노예는 reducer(은행원)로 간다
reducer(은행원): 어떻게 작업할지 계산한다

 

 

'React' 카테고리의 다른 글

React Router  (0) 2021.08.02
react-redux  (2) 2021.07.13
useReducer( )  (0) 2021.07.08
deps에 관하여,useEffect( ),useMemo(),useCallback(),useState( ),  (0) 2021.07.07
Context API  (0) 2021.07.04