리액트는 1개의 html에 component를 레고처럼 만들어 채우는 방식으로 페이지를 구성하고 있는데 이경우 html에서의 데이터(=state)를 컴포넌트에서 쓰고싶다고 해서 바로 컴포넌트들이 가지고 갈수있는것이 아니라 "props" 라는 것을 이용해서 컴포넌트들이 state를 내려받을수있다.또 리액트는 상위에서 하위로 상태값을 전달하여 상태를 관리하게 되어있는데 컴포넌트가 분리되어 점점 더 많아지는 상황에서 상태를 관리하게 위해서는 결국 props를 통해 수많은 컴포넌트들을 통과해 사용하는 하위까지 값을 전달해야 한다.
실제로 하위 컴포넌트에서 state를 사용하기위해 불필요한 props를 중간 컴포넌트들이 전달하는 용도로만 줄줄이 전달받아야 하는 상황 props drilling이 발생한다.
prop drilling이 2~3번만 일어나도 이미 state관리가 꽤나 지저분해진 상태가 되고 불필요한 re-rendering으로 인해 성능상의 이슈도 많이 발생하고 prop 전달이 10개, 15개 그 이상으로 더 많은 과정을 거치게 된다면 코드를 읽을 때 해당 prop을 추적하기 힘들어진다. 결국 이로 인해 유지보수도 더욱 어려워지게 된다.
그래서 전역상태 관리란 말하는바 그대로 전역에서 상태를 관리한다는 의미인데 ( props문법 귀찮을때, state 변경관리하기위해) 이를 위한 하나의 방법으로 전역상태관리 라이브러리를 사용한다.
나머지 라이브러리들도 리덕스와 똑같은 기능을 제공하기때문에 각각의 장단점을 한번 살펴보고 더 사용하기 편할것같은 것이나 프로젝트에 잘 맞는것으로 골라쓰면된다.
+) 리덕스의 사용방법은 Docs 를 살펴보면 자세히 잘 나와있다.
Credit :https://velog.io/@4_21ee/TIL-32-%EC%A0%84%EC%97%AD-%EC%83%81%ED%83%9C%EA%B4%80%EB%A6%AC