useRecoilValueLoadable(state)
このフックは非同期セレクターの値を読み取るために使用されることを目的としています。このフックはコンポーネントを指定された状態にサブスクライブします。
useRecoilValue()
とは異なり、このフックは非同期セレクターから読み取る際にError
またはPromise
をスローしません(React Suspense
を使用する目的のため)。代わりに、このフックはLoadable
オブジェクトを返します。
React 18トランジション
に対する実験的なサポートのために、useRecoilValueLoadable_TRANSITION_SUPPORT_UNSTABLE()
を使用してください。このサポートは、Recoil状態を変更することによって実現されています。
function useRecoilValueLoadable<T>(state: RecoilValue<T>): Loadable<T>
インターフェイスを持つ現在の状態のLoadable
を返します
state
:セレクターの状態を示します。可能な値は、'hasValue'
、'hasError'
、'loading'
です。contents
:このLoadable
によって表現される値です。状態がhasValue
の場合は実際の値で、状態がhasError
の場合はスローされたError
オブジェクトで、状態がloading
の場合は値のPromise
です。
例
function UserInfo({userID}) {
const userNameLoadable = useRecoilValueLoadable(userNameQuery(userID));
switch (userNameLoadable.state) {
case 'hasValue':
return <div>{userNameLoadable.contents}</div>;
case 'loading':
return <div>Loading...</div>;
case 'hasError':
throw userNameLoadable.contents;
}
}