useRecoilTransactionObserver_UNSTABLE(callback)
提示: 请注意此 API 目前尚处于不稳定状态
此钩子订阅每次更改 Recoil atom 状态时执行的回调函数。多个更新可以在一个事务中批处理。此钩子对于持久化状态更改、开发工具、构建历史等非常有用。
function useRecoilTransactionObserver_UNSTABLE(({
snapshot: Snapshot,
previousSnapshot: Snapshot,
}) => void)
此回调函数为 React 批处理事务提供当前和先前状态的 Snapshot
。如果你只想订阅单个 atom 的更改,请考虑使用 effects 代替。将来,我们可能会允许在特定条件下订阅,或者为了提升性能提供防抖功能。
调试示例
function DebugObserver() {
useRecoilTransactionObserver_UNSTABLE(({snapshot}) => {
window.myDebugState = {
a: snapshot.getLoadable(atomA).contents,
b: snapshot.getLoadable(atomB).contents,
};
});
return null;
}
function MyApp() {
return (
<RecoilRoot>
<DebugObserver />
...
</RecoilRoot>
);
}