5. Reference APIs
atomFamily(options)
atomFamily(options)
: atom
์ ๋ฐํํ๋ ํจ์๋ฅผ ๋ฐํํฉ๋๋ค.
Atom Family ๋ atom ์ ๋ชจ์์ ์๋ฏธํฉ๋๋ค.
const elementPositionStateFamily = atomFamily({
key: 'ElementPosition',
default: [0, 0],
});
function ElementListItem({elementID}) {
const position = useRecoilValue(elementPositionStateFamily(elementID));
return (
<div>
Element: {elementID}
Position: {position}
</div>
);
}
์์ฒ๋ผ atomFamily
๋ atom
๊ณผ ๊ฑฐ์ ๋์ผํ์ง๋ง ์ ๋ฌํ ๋งค๊ฐ๋ณ์์ ๋ฐ๋ผ RecoilState
๋ฅผ ์ ๊ณตํ๋ ํจ์๋ฅผ ๋ฐํํฉ๋๋ค.
selectorFamily(options)
selectorFamily(options)
: selector
ํจ์๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ๋ฐํํฉ๋๋ค.
atomFamily
์ ๋น์ทํ๊ฒ selectorFamily
๋ selector
์ ๋ชจ์์ ์๋ฏธํฉ๋๋ค.
selector
์ ์ ์ฌํ์ง๋ง get
, set
, selector
์ ์ฝ๋ฐฑ์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ ์ ์๋ค๋ ์ ์ด ๋ค๋ฆ
๋๋ค.
selectorFamily
์ ํธ๋ฆฌํฐ๋ ๋งค๊ฐ๋ณ์๋ก ํธ์ถ ํ ์ ์๋ ํจ์๋ฅผ ๋ฐํํ๊ณ selector
๋ฅผ ๋ฐํํฉ๋๋ค.
const myNumberState = atom({
key: 'MyNumber',
default: 2,
});
const myMultipliedState = selectorFamily({
key: 'MyMultipliedNumber',
get: (multiplier) => ({get}) => {
return get(myNumberState) * multiplier;
},
// optional set
set: (multiplier) => ({set}, newValue) => {
set(myNumberState, newValue / multiplier);
},
});
function MyComponent() {
// defaults to 2
const number = useRecoilValue(myNumberState);
// defaults to 200
const multipliedNumber = useRecoilValue(myMultipliedState(100));
return <div>...</div>;
}
useRecoilCallback(callback, deps)
useRecoilCallback(callback, deps)
: useCallback
๊ณผ ๋น์ทํ์ง๋ง Recoil ์ํ์์ callback์ด ๋์ํ๋๋ก API๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ด hook ์ ๋น๋๊ธฐ๋ก ํ์ฌ์ Recoil ์ํ๋ฅผ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์ฝ๊ธฐ ์ ์ฉ Snapshot ์ ์ ๊ทผํ ์ ์๋ callback ์ ๊ตฌ์ถํ๊ธฐ ์ํด ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
์ฌ์ฉํ๋ ๊ฒฝ์ฐ
๋ฆฌ์กํธ ์ปดํฌ๋ํธ์์ ํด๋น ์ํ๋ฅผ ๊ตฌ๋ ํ์ง ์๊ณ ์ถ์ ๋
๋ ๋๋ง ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋ (Pre-fetching)
Last updated
Was this helpful?