recoil
Version:
Recoil - A state management library for React
63 lines (51 loc) • 1.58 kB
Flow
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @emails oncall+recoil
* @flow strict-local
* @format
*/
;
import type { TransactionInterface } from '../core/Recoil_AtomicUpdates';
import type { RecoilState } from '../core/Recoil_RecoilValue';
const {
atomicUpdater
} = require('../core/Recoil_AtomicUpdates');
const {
batchUpdates
} = require('../core/Recoil_Batching');
const {
DEFAULT_VALUE
} = require('../core/Recoil_Node');
const {
useStoreRef
} = require('../core/Recoil_RecoilRoot.react');
const {
setRecoilValue
} = require('../core/Recoil_RecoilValueInterface');
const {
Snapshot,
cloneSnapshot
} = require('../core/Recoil_Snapshot');
const err = require('../util/Recoil_err');
const invariant = require('../util/Recoil_invariant');
const {
useGotoRecoilSnapshot
} = require('./Recoil_SnapshotHooks');
const {
useCallback
} = require('react');
export type RecoilCallbackInterface = $ReadOnly<{
set: <T>(RecoilState<T>, ((T) => T) | T) => void,
reset: <T>(RecoilState<T>) => void,
snapshot: Snapshot,
gotoSnapshot: (Snapshot) => void,
transact_UNSTABLE: ((TransactionInterface) => void) => void,
}>;
declare class Sentinel {}
const SENTINEL = new Sentinel();
declare function useRecoilCallback<Args: $ReadOnlyArray<mixed>, Return>(fn: (RecoilCallbackInterface) => (...Args) => Return, deps?: $ReadOnlyArray<mixed>): (...Args) => Return;
module.exports = useRecoilCallback;