loadable
如果您不希望异步原子 suspend 或抛出错误边界(例如,为了更细粒度地控制加载和错误逻辑),您可以使用 loadable
。
它对任何原子都以同样的方式工作。 只需使用 loadable
包装您的原子。 它返回具有以下三种状态之一的值:loading
、hasData
和 hasError
。
{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 Promisereturn <Text>Value: {value.data}</Text>}