Recoil 소개 - 동기 (공식 문서)

민순기·2021년 12월 22일
0

Recoil

목록 보기
1/2

Recoil의 탄생 이유

Recoil은 React를 위한 상태 관리 라이브러리다.

호환성 및 단순함을 이유로 글로벌 상태관리 라이브러리(ie.Redux)보다는 React 자체에 내장된 상태 관리 기능을 사용하는 것이 가장 좋다.
그러나 React는 다음과 같은 한계가 있다.

  • 컴포넌트의 상태는 공통된 상위요소까지 끌어올림으로써 공유될 수 있지만, 이 과정에서 거대한 트리가 다시 렌더링되는 효과를 야기하기도 한다.

  • Context는 단일 값만 저장할 수 있으며, 자체 소비자(consumer)를 가지는 여러 값들의 집합을 담을 수는 없다.

  • 이 두가지 특성이 트리의 최상단(state가 존재하는 곳)부터 트리의 잎(state가 사용되는 곳)까지의 코드 분할을 어렵게 한다.

우리는 API와 의미 및 동작을 가능한 React스럽게 유지하면서 이것을 개선하고자 한다.

Recoil에서 상태 변화는 뿌리(atoms)로부터 순수함수(selectors)를 거쳐 컴포넌트로 흐르며, 다음과 같은 접근 방식을 따른다.

  • 우리는 공유상태(shared state)도 React 내부상태(local state)처럼 간단한 get/set 인터페이스로 사용할 수 있도록 boilerplate-free API를 제공한다. (필요한 경우 reducers 등으로 캡슐화할 수도 있다.)

  • 우리는 동시성 모드(Concurrent Mode)를 비롯한 다른 새로운 React의 기능들과의 호환 가능성도 갖는다.

  • 상태 정의는 증분 및 분산되므로 코드 분할이 가능하다.

  • 상태를 사용하는 컴포넌트를 수정하지 않고도 상태를 파생된 데이터로 대체할 수 있다.

  • 파생된 데이터를 사용하는 컴포넌트를 수정하지 않고도 파생된 데이터는 동기식과 비동기식 간에 이동할 수 있다.

  • 우리는 탐색을 일급 개념으로 취급할 수 있고 심지어 링크에서 상태 전환을 인코딩할 수도 있다.

  • 역호환성 방식으로 전체 애플리에키션 상태를 유지하는 것은 쉬우므로, 유지된 상태는 애플리케이션 변경에도 살아남을 수 있다.

profile
2년차 FE 개발자 민순기입니다.

0개의 댓글