useRecoilStateLoadable(state)
此钩子旨在用于读取异步选择器的值。此钩子将隐式地将组件订阅到给定的状态。
与 useRecoilState() 不同,此钩子在读取异步选择器时不会抛出 Error 或 Promise(为了与 React Suspense 协同工作)。相反,此钩子为该值返回一个 Loadable 对象以及 setter 回调函数。
function useRecoilStateLoadable<T>(state: RecoilState<T>): [Loadable<T>, (T | (T => T)) => void]
返回当前状态的 Loadable,其接口如下:
state:指示选择器的状态。可能的值包括'hasValue'、'hasError'和'loading'。contents:此Loadable所代表的值。如果状态为hasValue,则它为实际值;如果状态为hasError,则它为抛出的Error对象;如果状态为loading,则它为该值的Promise。
示例
function UserInfo({userID}) {
const [userNameLoadable, setUserName] = useRecoilStateLoadable(userNameQuery(userID));
switch (userNameLoadable.state) {
case 'hasValue':
return <div>{userNameLoadable.contents}</div>;
case 'loading':
return <div>Loading...</div>;
case 'hasError':
throw userNameLoadable.contents;
}
}