data-flow graph: atoms(공유 상태) + selectors(순수함수)

배열을 리턴하는 selector

get으로 값을 얻은 결과를 map해준다

waitForAll vs waitForNone

All은 단순 병렬처리이다. selector로 매핑된 요소들을 waitForAll로 받아야한다.

None은 병렬처리 + Ui처리까지 가능하다. 상태에따라 필터링하고나서 그에따른 ui처리를 할 수가 있다.

Atom Effects

Atom initialize 시기

  1. <RecoilRoot> 에서 처음 사용되어질 때,
  2. 사용이 안되고 지워질때

⇒ 1, 2 때 Atom Effects 가 호출된다.

Atom Effects 를 사용해야 하는 이유

  1. React Effects를 사용하면 Atom 과 분리돼있기 때문에 effect 관리가 어렵다. 특히 동적 init 되는 Atom 들이. 또 Atom value 는 서버사이드 렌더링 환경에서는 초기화 할 수 없다.
  2. Snapshot을 사용해도 Atom 상태를 추적할 수 있으나 동적 생성되는 Atom, 특히 Atom Family 에는 잘 어울리지 못해서 결국 Atom Effects 를 사용하는것이 맞다.