Recoil을 쓰지 않을 경우 -> 프롭이 필요하지 않는 컴포넌트까지 프롭이 계속 전달됨
특히 컴포넌트의 트리가 깊어질수록 이런 프롭드릴링이 복잡해지고 실수를 유발하기 쉽다.
Recoil은 하나의 버블에서 value가 필요한 컴포넌트들의 접근을 가능하게 해준다.
recoil에서는 이러한 bubble을 atom 이라고 부른다.
각 아톰안에는 원하는 value들을 저장해 둘수 있다.
ex) isDark, isLoggedin..
<RecoilRoot>
<QueryClientProvider client={queryClient}>
<App />
</QueryClientProvider>
</RecoilRoot>
import { atom } from "recoil";
export const isDarkAtom = atom({
key: "isDark",
default : false,
})
const [text, setText] = useRecoilState(textAtom);
const setDarkAtom = useSetRecoilState(isDarkAtom);
const DarkAtomValue = useRecoilValue(isDarkAtom);