A state management library for React
리액트를 위한 상태 관리 라이브러리
We want to improve this while keeping both the API and the semantics and behavior as Reactish as possible.
API, 의미, 동작을 최대한 리액트스럽게 유지하면서 이를 개선하고자 한다
여기서 말하는 This는 무엇을 말하는 것일까요?
제 생각에는 State Management입니다.
자세하게 설명하지는 않지만, Redux의 상태관리는 불편한 점이 많다는 데에서 시작되었다고 생각해도 될 것 같아요.
Redux는 React의 빌트인 상태관리 라이브러리가 아닙니다.
그렇기에 Recoil은 호환성과 간단함을 개선하기 위해서 외부의 글로벌 상태로 관리하기보다는 리액트의 빌트인 상태관리 능력(useState)을 사용하고자 했습니다.
그렇지만 React의 useState는 몇 번 사용해보시면 알겠지만 불편한 점들이 존재합니다.
1.
컴포넌트의 상태들이 공통 조상으로부터 props를 통해 뻗어나가야 자식 컴포넌트들이 사용가능하다는 점
2.
1번을 개선시키기 위해 React안에 있는 Context 개념을 사용하면 된다고 생각할 수 있지만, Context 객체는 value를 하나만 줄 수 있고, value를 여러 set으로는 만들 수 없습니다(물론 여러 Context 객체를 만들어서 여러 value를 만들 수 있기야 하죠).
a.
게다가 Context Api 문서를 좀 읽어보시면 아시겠지만, 해당 문법을 아는 것과 모르는데에서 오는 이해도 차이가 엄청납니다.
3.
이런 점들은 부모 컴포넌트로부터 뻗어 내려오는 트리의 구조의 분리를 어렵게 만듭니다(상태값들을 꾸준히 내려줘야하니까요).
a.
그렇게 되면 하위 컴포넌트들이 계속 뻗어나가지겠죠

