JotaiJotai

状態
Primitive and flexible state management for React

loadable

如果您不希望异步原子 suspend 或抛出错误边界(例如,为了更细粒度地控制加载和错误逻辑),您可以使用 loadable

它对任何原子都以同样的方式工作。 只需使用 loadable 包装您的原子。 它返回具有以下三种状态之一的值:loadinghasDatahasError

{
state: 'loading' | 'hasData' | 'hasError',
data?: any,
error?: any,
}
import { loadable } from "jotai/utils"
const asyncAtom = atom(async (get) => ...)
const loadableAtom = loadable(asyncAtom)
// 不需要被 <Suspense> 元素包裹
const Component = () => {
const [value] = useAtom(loadableAtom)
if (value.state === 'hasError') return <Text>{value.error}</Text>
if (value.state === 'loading') {
return <Text>Loading...</Text>
}
console.log(value.data) // Results of the Promise
return <Text>Value: {value.data}</Text>
}