reducer와 순수함수의 개념에 대해 더 자세히 알아보자.
Redux의 reducer는 **순수 함수(pure function)**로 정의되며, 다음과 같은 특징이 있습니다:
- 입력과 출력의 관계:
- reducer는 현재 상태와 액션을 인자로 받아, 이 두 값에 기반하여 새로운 상태를 반환합니다.
- 이 과정에서 기존 상태를 직접 변경하지 않고, 새로운 상태 객체를 만들어 반환합니다.
- 부수 효과 없음:
- reducer 내부에서는 데이터의 생성, 업데이트, 삭제와 같은 작업이 있더라도, 외부의 상태나 데이터에 영향을 주지 않아야 합니다.
- 모든 연산은 오직 입력값에만 의존하며, 동일한 입력에 대해 항상 동일한 출력을 보장합니다.
- 불변성(Immutable State) 유지:
- reducer는 기존의 상태를 변경하지 않고, 복사본을 생성하거나 새로운 객체를 반환함으로써 상태의 불변성을 유지합니다.
- 이를 통해 예측 가능한 상태 관리와 디버깅이 용이해집니다.
<aside>
💡
즉, reducer는 단순히 전달받은 상태와 액션을 바탕으로 새 상태를 계산하여 반환하는 함수로, 데이터의 CRUD 작업을 외부에 부수적인 효과 없이 순수하게 처리하는 역할을 합니다.
</aside>