useGetRecoilValueInfo_UNSTABLE()
このフックにより、コンポーネントは現在のアトムやセレクターのステート、値、その他の情報を「のぞき見」できます。これは スナップショット
と アトムエフェクト の getInfo_UNSTABLE()
メソッドに似ています。
function useGetRecoilValueInfo_UNSTABLE(): RecoilValue<T> => RecoilValueInfo<T>;
interface RecoilValueInfo<T> {
loadable?: Loadable<T>;
isActive: boolean;
isSet: boolean;
isModified: boolean; // TODO report modified selectors
type: 'atom' | 'selector';
deps: Iterable<RecoilValue<T>>;
subscribers: {
nodes: Iterable<RecoilValue<T>>,
components: Iterable<ComponentInfo>,
};
}
interface ComponentInfo {
name: string;
}
RecoilValue<T>
を受け渡すことができる関数が提供され、そのアトム/セレクターに関する最新の情報を格納したオブジェクトが返されます。これにより、ステートが変更されたり、サブスクリプションが作成されたりすることはありません。主にデバッグや開発ツールで使用することを目的としています。
デバッグ情報は進化していますが、以下を含みます。
loadable
- 現在のステートを持つ Loadable。getLoadable()
などのメソッドとは異なり、このメソッドはスナップショットを一切変更しません。現在のステートを提供し、新しいアトム/セレクターを初期化したり、新しいセレクタ評価を実行したり、依存関係やサブスクリプションを更新したりしません。isSet
- スナップショットステートに明示的な値が格納されたアトムである場合に true。セレクターであるか、デフォルトのアトムステートを使用する場合に false。isModified
- 前回のトランザクション以降に変更されたアトムである場合に true。type
-atom
またはselector
deps
- このノードが依存しているアトムまたはセレクターに対する反復処理。subscribers
- このスナップショットに対するこのノードのサブスクライバーに関する情報。詳細は開発中です。
例
function ButtonToShowCurrentSubscriptions() {
const getRecoilValueInfo = useGetRecoilValueInfo_UNSTABLE();
function onClick() {
const {subscribers} = getRecoilValueInfo(myAtom);
console.debug(
'Current Subscriber Nodes:',
Array.from(subscribers.nodes).map(({key}) => key),
);
}
return <button onClick={onClick} >See Current Subscribers</button>;
}