扫码一下
查看教程更方便
useGetRecoilValueInfo_UNSTABLE()
钩子函数允许组件 “窥视” atom 或者 selector 的当前状态、值和其他信息。这类似于 Snapshot 中的 getInfo_UNSTABLE() 方法。
function useGetRecoilValueInfo_UNSTABLE(): RecoilValue<T> => AtomInfo<T>;
interface AtomInfo<T> {
loadable?: Loadable<T>;
isActive: boolean;
isSet: boolean;
isModified: boolean; // TODO 是否报告已修改的 selectors
type: 'atom' | 'selector' | undefined; // 初始化之前暂时设定为 undefined
deps: Iterable<RecoilValue<T>>;
subscribers: {
nodes: Iterable<RecoilValue<T>>,
components: Iterable<ComponentInfo>,
};
}
interface ComponentInfo {
name: string;
}
它提供了一个可以通过 RecoilValue<T>
传递的函数并且将会返回一个包含 atom/selector
当前信息的对象。它并不会导致任何 state 改变或者创建任何订阅。它主要用于调试或开发工具中。
调试信息正在改进中,但可能包括:
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>;
}