#31 오랜만에 리액트 공부...
💡 리덕스(Redux) 규칙
리덕스를 프로젝트에 사용하기 전에, 꼭 알아야 할 3가지 규칙!
1. 하나의 애플리케이션 안에 하나의 스토어가 있다.
- 하나의 애플리케이션에서는 단 한개의 스토어를 만들어서 사용해야한다.
여러개의 스토어를 사용해도 되지만, 상태 관리가 복잡해져 가급적이면 권장하지 않는다.
(예외로 특정 업데이트가 너무 많거나, 애플리케이션의 특정 부분을 완전히 분리시킬 때 여러개의 스토어를 만들 수도 있다.)
번외로 스토어에 알아보자면...
스토어는 클래스가 아닌 몇 가지 메서드가 들어있는 객체일 뿐이다.
스토어는 아래와 같은 일들을 한다.
- getState( ) 를 통해 상태에 접근하게 한다.
- 애플리케이션의 상태를 저장하고
- dispatch(action) 를 통해 상태를 수정할 수 있게 된다.
- subscribe(listener) 를 통해 리스터를 등록한다.
2. 상태(state) 는 읽기 전용이다.
-
리액트에서 state 의 불변성을 지키듯이, 리덕스에서도 마찬가지이다. 기존의 상태는 건들지 않고 새로운 상태를 생성해서 업데이트 해주는 방식으로 해주고 나중에는 개발자 도구를 통해서 뒤로 돌리고 앞으로 돌릴 수 있다.
불변성을 유지하는 이유는 내부적으로 데이터가 변경 되는 것을 감지하기 위해 특정 검사를 하기 때문이다. 이를 통해서 객체의 변화를 감지 할 때 객체의 맨 안쪽까지 비교를 하는게 아니고, 겉핥기 식으로 비교를 하여 성능을 유지시킨다.
불변성은 리액트를 공부한다면 무조건 알아야할 규칙이다.
3. 리듀서는 순수한 함수여야 한다.
- 리듀서는 이전 상태와 액션 객체를 파라미터로 받는다.
- 이전의 상태는 건들지 않고 새로운 상태 객체를 만든다.
- 똑같은 파라미터로 호출된 리듀서 함수는 늘 똑같은 결과값을 리턴해주어야 한다.
- 하지만 결과값이 다르다면 리덕스 미들웨어를 사용해서 처리해줘야 한다.
참고 : 벨로퍼트와 함께하는 모던 리액트