리덕스의 3가지 규칙

정영찬·2022년 3월 12일
0

리액트

목록 보기
50/79

하나의 애플리케이션 안에는 하나의 스토어가 있다.

여러개의 스토어를 사용하는게 불가능한가? 그건 아니지만 권장하는 편은 안디ㅏ. 특정 업데이트가 빈번하게 일어나거나, 애플리케이션의 특정부분을 완전히 분리시키게 될때 여러개의 스토어를 만들수 있다. 하지만 그렇게 할 경우, 개발도구를 활용하지 못하게 된다.

상태는 읽기전용이다.

기존의 상태는 건드리지 않고 새로운 상태를 생성하여 업데이트 하는 방식으로 할 경우, 개발자 도구를 통해 뒤로 되돌릴수 있고, 앞으로 돌릴 수도 있다.

리덕스에서 불변성을 유지해야하는 이유는 내부적으로 데이터가 변경되는 것을 감지하기 위해서 shallow equality검사를 하기 때문이다. 이를 통해서 객체 변화를 감지할 때 깊숙한 안쪽까지 비교하는게 아니라 겉부분을 비교하여 좋은 성능을 유지하게 되는 것이다.

리듀서는 순수한 함수여야한다.

  • 리듀서 함수는 이전 상태와, 액션 객체를 파라미터로 받는다.
  • 이전의 상태는 절대 건드리지 않고 새로운 생태 객체를 만들어서 반환하다.
  • 똑같은 파라미터로 호출된 리듀서 함수는 언제나 같은 결과 값을 반환해야한다.

3번째 조건의 경우 실행할 때마다 다른 결과값이 나타날 수 있다. new Date()같은 현재 시간값을 반환하는경우, 무작위 값을 리턴하는 함수같은 경우, 네트워크의 요청을 하는 경우는 리듀서 바깥에서 처리해야하는데 이를 위해 리덕스 미들웨어를 사용한다.

profile
개발자 꿈나무

0개의 댓글