단순한 정적인 의존성이 있는 Selector
const mySelector = selector({
key: 'MySelector',
get: ({get}) => get(myAtom) * 100,
});
읽기만 가능한 selector는 의존성을 기준으로 selector의 값을 평가하는 get
메서드를 갖는다.
의존성 중 어떠한 것이 업데이트 되면 selector는 다시 평가된다. (리랜더링 된다.)
Selector를 평가할 때 실제로 사용하는 atom이나 selector를 기반으로 의존성이 동적으로 결정된다.
이전 의존성의 값에 따라 다른 추가적인 의존성을 동적으로 사용할 수 있다.
Recoil은 Selector가 현재 업데이트되어진 의존성 집합만 구독하도록 현재 데이터 흐름 그래프를 자동적으로 업데이트 한다.
아래 예시에서 mySelector
는 toggleState
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
}
},
});