useGetRecoilValueInfo_UNSTABLE()
Ce hook permet à un composant de "jetter un œil" à l'état courant, valeur, et autres informations concernant l'atome ou sélecteur. Ceci est similaire à la méthode getInfo_UNSTABLE()
de Snapshot
function useGetRecoilValueInfo_UNSTABLE(): RecoilValue<T> => AtomInfo<T>;
interface AtomInfo<T> {
loadable?: Loadable<T>;
isActive: boolean;
isSet: boolean;
isModified: boolean; // TODO report modified selectors
type: 'atom' | 'selector' | undefined; // undefined until initialized for now
deps: Iterable<RecoilValue<T>>;
subscribers: {
nodes: Iterable<RecoilValue<T>>,
components: Iterable<ComponentInfo>,
};
}
interface ComponentInfo {
name: string;
}
Il fournit une fonction qui peut recevoir un RecoilValue<T>
et renvoie un objet qui contient des informations actuelles sur cet atome / sélecteur. Cela n'entraînera aucun changement d'état ni ne créera d'abonnement. Il est principalement destiné à être utilisé dans les outils de débogage ou de développement.
Les informations de débogage sont sujettes à changement, mais peuvent inclure:
loadable
- Un Loadable avec l'état actuel. Contrairement aux méthodes commegetLoadable()
, cette méthode ne change pas l'instantané. Il fournit l'état actuel et n'initialisera pas de nouveaux atomes / sélecteurs, n'effectuera aucune nouvelle évaluation de sélecteur et ne mettra à jour aucune dépendance ou abonnement.isSet
- Vrai s'il s'agit d'un atome avec une valeur explicite stockée dans l'état de l'instantané. Faux s'il s'agit d'un sélecteur ou d'une valeur d'atome par défaut.isModified
- Vrai s'il s'agit d'un atome qui a été modifié depuis la dernière transaction.type
- Soit unatom
, soit unselector
deps
- Un itérateur sur les atomes ou sélecteurs dont dépend ce nœud.abonnés
- Informations sur ce qui s'abonne à ce nœud pour cet instantané. Détails en cours de développement.
Exemple
function ButtonToShowCurrentSubscriptions() {
const getRecoilValueInfo = useGetRecoilValueInfo_UNSTABLE();
function onClick() {
const {subscribers} = getRecoilValueInfo(myAtom);
console.debug(
'Inscriptions courantes:',
Array.from(subscribers.nodes).map(({key})=>key),
);
}
return <button onClick={onClick} >Voir les inscriptions courantes</button>;
}