跳转到主要内容

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>
);
}