단순한 정적인 의존성이 있는 Selector

const mySelector = selector({
  key: 'MySelector',
  get: ({get}) => get(myAtom) * 100,
});

읽기만 가능한 selector는 의존성을 기준으로 selector의 값을 평가하는 get 메서드를 갖는다.

의존성 중 어떠한 것이 업데이트 되면 selector는 다시 평가된다. (리랜더링 된다.)

Selector를 평가할 때 실제로 사용하는 atom이나 selector를 기반으로 의존성이 동적으로 결정된다.

이전 의존성의 값에 따라 다른 추가적인 의존성을 동적으로 사용할 수 있다.

Recoil은 Selector가 현재 업데이트되어진 의존성 집합만 구독하도록 현재 데이터 흐름 그래프를 자동적으로 업데이트 한다.

아래 예시에서 mySelectortoggleState atom 뿐만 아니라 toggleState 에 의존하는 selectorA 또는 selectorB selector도 의존한다.

const toggleState = atom({key: 'Toggle', default: false});

const mySelector = selector({
  key: 'MySelector',
  get: ({get}) => {
    const toggle = get(toggleState); // atom
    if (toggle) {
      return get(selectorA); // selector
    } else {
      return get(selectorB); // selector
    }
  },
});