state값을 공유하려면 react에서는 최상위 부모에서 props를 이용해 state 값을 계속 내려주어 사용해야하지만 context api를 사용하면 각 컴포넌트 간의 관계에 상관없이 다른 컴포넌트에서도 state나 함수를 사용할 수 있는 상태관리이다. props로 여기저기 내려주고 이어주는 것보다 유지보수 측면에서 효율적이다.
redux 또한 props 를 이용하지 않고 전역에서 상태관리를 할 수 있게 도와주는 라이브러리이다. store라는 곳에 globalstate를 저장해두고 원하는 곳에서 언제든지 꺼내 사용할 수 있다. 또한 프로젝트 규모가 커지는 경우 Context API 보다 유지보수 측면과 효율성에서 뛰어나다.
mobx 또한 redux와 비슷한 역할을 하는 라이브러리이다. 다른 점은 redux에 비해 store의 제한이 없어 사용하기 쉽고, redux에서 해줘야 했던 action, connect 등 번거로운 작업들을 데코레이터라는 것으로 간단하게 해결이 가능하다. 또한 Typescript 기반으로 만들어졌다.
참조 : https://kyounghwan01.github.io/blog/React/mobx/basic/#%E1%84%89%E1%85%A1%E1%84%8B%E1%85%AD%E1%86%BC%E1%84%92%E1%85%A1%E1%84%82%E1%85%B3%E1%86%AB-%E1%84%8B%E1%85%B5%E1%84%8B%E1%85%B2
swr의 경우 서버데이터를 상태관리해주는 라이브러리이다. redux보다 나중에 나왔기 때문에 훨씬 간단하며 비동기로 실행된다. 보통은 query와 같은 fetch 기능을 사용하는데 이용된다.