사전에 요구되는 개념들
리듀서에서 설명한 것처럼 리덕스의 리듀서는 함수입니다:
(previousState, action) => newState
의 꼴로 작성되어야 합니다.Array.prototype.reduce(reducer, ?initialValue)
에 전달되는 함수 타입과 비슷합니다."순수"해야 합니다. 리듀서에서 이것의 의미는:
사이드이펙트(API를 호출하거나 지역객체, 지역변수가 아닌 것을 수정하는 등)가 생기면 안됩니다.
순수하지 않은 함수(Date.now 혹은 Math.random와 같은)를 호출하면 안됩니다.
인수를 변경하면 안 됩니다. 리듀서가 상태를 변화시킬 때 이미 존재하는 상태 객체를 수정하면 안됩니다. 그 대신 변화에 필요한 새로운 객체를 만들어야 합니다. 리듀서가 업데이트하는 상태 내의 모든 객체에 동일한 접근이 필요합니다.
불변성, 사이드이펙트, 변화에 대한 주의변경은 시간 단위 디버깅과 리덕스의
connect
함수를 방해하기 때문에 권장되지 않습니다:
시간 단위로 디버깅할때 리덕스 DevTools는 기록 된 액션들에게 상태 값만 만드는 것을 기대합니다. 변화나 비동기액션같은 사이드이펙트는 시간단위 디버깅에서 각 단계 간의 동작을 변화시켜 애플리케이션을 중단시킵니다.
리액트 리덕스에서
connect
는 컴포넌트가 업데이트되어야 하는지 확인하기 위해mapStateToProps
함수로 부터 반환된 props를 확인합니다. 성능의 향상을 위해서connect
는 불변성에 기인한 더 쉬운 방법을 취하며 객체가 동일한지 확인하기 위해 얕은 참조 검사를 사용합니다. 즉, 직접 객체를 변화시킨 것은 감지하지 못하며, 다시 렌더링 되지 않습니다.그 외 리듀서에서 유니크한 ID나 타임스탬프와 같은 것들을 생성하는 것은 코드를 예측할 수 없게 하고 디버그, 테스트를 어렵게 합니다.
이런 규칙들 때문에 리덕스 리듀서의 다른 개념들을 익히기 전에 아래의 중요한 개념들을 익히는 것이 중요합니다.
리덕스 리듀서 기초
핵심 개념:
상태와 상태의 형태 관점으로 생각하기
상태 조각에 의한 업데이트 책임 위임(리듀서 구성)
고차 리듀서
초기 상태 리듀서 정의
읽어볼 것들
순수함수와 사이드이펙트
핵심 개념:
사이드이펙트
순수함수
함수 결합의 관점으로 생각하기
읽어볼 것들:
불변데이터 관리
핵심 개념:
가변성 vs 불변성
객체와 배열을 쉽고 안전하게 업데이트하기
가변적인 함수와 명령 피하기
읽어볼 것들:
데이터 정규화
핵심 개념:
데이터베이스 구조와 구성
관계/중첩 데이터를 분리 된 테이블로 쪼개기
특정 항목에 대한 한가지 정의 저장하기
아이디로 항목 호출하기
조회 ID로 항목 ID가 입력된 개체를 사용하고 아이디의 배열로 순서 추적하기
관계있는 항목 연결
읽어볼 것들:
Last updated