AtomValue
AtomValue ์ปดํฌ๋ํธ๋ Jotai์ useAtomValue ํ ๊ณผ ๋์ผํ ์ธํฐํ์ด์ค๋ฅผ Props๋ก ์ ๊ณตํ๋ฉฐ ์ ์ธ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
props.atom
Jotai์ atom์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
import { AtomValue } from '@suspensive/jotai'
import { atom } from 'jotai'
const countAtom = atom(1)
const Example = () => (
<AtomValue atom={countAtom}>{(count) => <>count: {count}</>}</AtomValue>
)
Async Atom์ผ ๊ฒฝ์ฐ ํ๋ก๋ฏธ์ค(Promise)๊ฐ ํด๊ฒฐ(resolve) ๋๊ธฐ ์ ๊น์ง, ๋ถ๋ชจ์ Suspense์๊ฒ Promise์ pending ์ํ๋ฅผ ์์ํฉ๋๋ค.
import { AtomValue } from '@suspensive/jotai'
import { Suspense } from '@suspensive/react'
import { atom } from 'jotai'
const countAtom = atom(1)
const asyncDoubleCountAtom = atom(async (get) => {
await delay(2000)
return get(countAtom) * 2
})
const Example = () => (
<Suspense fallback={'pending...'}>
<AtomValue atom={asyncDoubleCountAtom}>
{(count) => <>count: {count}</>}
</AtomValue>
</Suspense>
)
๋๊ธฐ
<Atom/>
์ ๋๊ธฐ์ ๊ฐ์ด <AtomValue/>
๋ํ, ์์ ์ปดํฌ๋ํธ์์ ๋ช
ํํ๊ฒ ๋๋ฌ๋์ง ์์ต๋๋ค. ํ์์ ์ ์ธ๋ ์ปดํฌ๋ํธ๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ด๋ค Atom์ ์ฌ์ฉํ๊ณ , Suspense๋ฅผ ๋ฐ์ํ ์ง ์์ํ๊ธฐ ์ด๋ ต์ต๋๋ค.