React 개발을 공부하면서 , 상태관리에 대해서는 많이 접하게 되었다.
상태 관리를 하는 라이브러리는 대표적으로 4가지가 있고 , 상태관리를 왜 사용해야 하는지에 대해 알아보려고 한다
상태관리를 사용하는 이유는 React에서는 단방향 바인딩을 사용하기때문이다.
React는 단방향 바인딩을 지원하기 때문에 부모에서 자식으로만 state를 props로 전달할 수 있다, 자식의 props를 부모에게 직접적으로는 전달이 불가능하다는 점.
자식에서 부모의 state를 변경하려면 해당 state를 컨트롤하는 함수를 props로 넘겨주는 방식을 사용해야 한다. 하지만 이것이 반복되다 보면 props drilling이 발생하게 된다
또한 프로젝트의 규모가 커질수록 코드를 읽기가 어려워지는 점과 props의 뎁스가 증가하게 되어 불필요한 리렌더링을 유발할 수 있다. 처음에 개발을 접했을 때 이 점을 몰라 무한 리렌더링이 많이 걸린 경험이 있었다.
상태관리 라이브러리는 종류가 대표적으로 4가지가 있습니다.
Redux , MobX, Recoil 등 이 있고
각 라이브러리마다 장단점이 있고 프로젝트의 특성에 맞게 골라 사용하면 좋을것이다.
Redux는 기본적으로 많은 회사에서 사용하는 상태관리 라이브러리입니다.
많은 개발도구와 라이브러리를 포함하고 있으며 코드가 직관적인게 장점입니다.
immutable.js같은 라이브러리도 존재합니다.MobX는 Redux보단 많이 사용되지는 않지만 2번째로 많이 사용되는 라이브러리입니다.
OOP(객체 지향 프로그래밍) 구조로 상태를 관리하고 처리속도가 빠르며 , 코드가 적고 유연하다는 장점이 있습니다.
Recoil은 Redux, MobX 보다 쉽고 간단하게 배울 수 있고 간단한 라이브러리입니다.
낮은 러닝커브로 쉽게 배울 수 있는 장점과 보일러플레이트가 많지 않은 장점이 있습니다.
React에서 내장되어 있는 라이브러리로 일일히 props를 넘겨주지 않고도 컴포넌트 트리 전체에 제공할 수 있다. 컴포넌트를 Provider로 감싸주면 하위 컴포넌트들이 전역 데이터에 접근 할 수 있다.
주관적으로 작성된 비교글이며 어떤것을 더 배워야 할 지 정리하면서 작성한 글입니다.