Ryu.log

[ React redux 05 ] 리덕스의 세가지 규칙 및 정리 본문

Prev-content

[ React redux 05 ] 리덕스의 세가지 규칙 및 정리

류뚝딱 2018. 9. 7. 15:11


01. 리덕스의 세가지 규칙

이 세 가지는 리덕스 공식 메뉴얼에서 알려 주는 규칙이다.

그리 복잡하지는 않지만 이 사항을 숙지한 상태에서 리덕스 관련 코드를 작성해야 상태를 원활하게 관리할 수 있다.


01 - 스토어는 단 한개


스토어는 언제나 단 한개이다. 스토어를 여러개 생성해서 상태를 관리하면 안된다.

그 대신 리듀서를 여러개 만들어서 관리할 수있다. 나중에 더 자세히 알아보자.



02 - state는 읽기 전용


리덕스의 상태, state 값은 읽기 전용입니다. 이 값은 절대로 직접 수정하면 안된다. 그렇게 하면 리덕스의 구독 함수를 제대로 실행하지 않거나

컴포넌트의 리렌더링이 되지 않을 수 있다.


상태를 업데이트할 때에는 언제나 새 상태 객체를 만들어서 넣어 주어야 한다. 업데이트를 할 때 마다 새 객체를 만들어야 하다니, 

메모리 누수가 일어나지는 않을까 걱정이 된다면, 걱정하지 않아도 된다.

Object.assign을 사용 한다고 해서 이전에 사용하던 객체들이 메모리에 누적되지는 않는다.

상태 레퍼런스가 사라지면 자동으로 메모리 관리를 한다. 또 nested된 객체가 있을 때 (여러 괄호로 감싼) 

그 내부의 깊은 값까지 복사하는게 아니라.

객체 내부의 키 레퍼런스만 복사하므로 객체가 복잡하다고 해서 성능이 악화되지는 않는다.



03 - 변화는 순수 함수로 구성


모든 변화는 순수 함수로 구성해야 한다. 여기에서 함수란 바로 리듀서 함수를 가리킨다.

순수 함수에서 결과 값을 출력할 때는 파라미터 값에만 의존해야 하며, 같은 파라미터는 언제나 같은 결과를 출력해야 한다.


예를 들어 리듀서 함수 내부에서 외부 네트워크와 데이터베이스에 직접 접근하면 안된다.

요청이 실패할 수도있고, 외부 서버의 반환 값이 변할 수 있기 때문이다,


리듀서 함수 내부에는 현재 날짜를 반환하는 new Date() 함수나 math.random() 함수 등도 사용하면 안된다.


02. 정리

리덕스는 더욱 효율적으로 상태 관리를 할 수 있는 라이브러리이다. 스토어에 상태정보를 가진 객체를 넣어 두고, 
액션이 디스패치되었을 때 리듀서 함수를 이용하여
상태를 변화시키는 것이 주요 역할이다. 그리고 상태가 변화될 때마다 스토어에 구독된 함수를 실행시킨다.

이번에는 리덕스를 리액트와 연동하지 않고, 자체적으로 사용하면서 개념을 이해했다.
다음번에는 리액트 애플리케이션과 연동하여 사용하는 법을 알아보자.


Comments