useRecoilStateLoadable(state)
このフックは非同期セレクターの値を読み取るために使用することを目的としています。このフックはコンポーネントを暗黙的に指定された状態にサブスクライブします。
useRecoilState()
とは異なり、このフックは非同期セレクターから読み込むときにError
またはPromise
をスローしません(React Suspense
と連携させる目的のため)。代わって、このフックは値のLoadable
オブジェクトとセッターのコールバックを返します。
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;
}
}