data-flow graph: atoms(공유 상태) + selectors(순수함수)
배열을 리턴하는 selector
get으로 값을 얻은 결과를 map해준다
waitForAll vs waitForNone
All은 단순 병렬처리이다. selector로 매핑된 요소들을 waitForAll로 받아야한다.
None은 병렬처리 + Ui처리까지 가능하다. 상태에따라 필터링하고나서 그에따른 ui처리를 할 수가 있다.
Atom Effects
Atom initialize 시기
<RecoilRoot>
에서 처음 사용되어질 때,
- 사용이 안되고 지워질때
⇒ 1, 2 때 Atom Effects 가 호출된다.
Atom Effects 를 사용해야 하는 이유
- React Effects를 사용하면 Atom 과 분리돼있기 때문에 effect 관리가 어렵다. 특히 동적 init 되는 Atom 들이. 또 Atom value 는 서버사이드 렌더링 환경에서는 초기화 할 수 없다.
- Snapshot을 사용해도 Atom 상태를 추적할 수 있으나 동적 생성되는 Atom, 특히 Atom Family 에는 잘 어울리지 못해서 결국 Atom Effects 를 사용하는것이 맞다.