recoil
Version:
Recoil - A state management library for React
74 lines (61 loc) • 2.04 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, RecoilValue } from '../core/Recoil_RecoilValue';
import type { Store } from '../core/Recoil_State';
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');
const {
refreshRecoilValue,
setRecoilValue
} = require('../core/Recoil_RecoilValueInterface');
const {
Snapshot,
cloneSnapshot
} = require('../core/Recoil_Snapshot');
const {
gotoSnapshot
} = require('./Recoil_SnapshotHooks');
const {
useCallback
} = require('react');
const err = require('recoil-shared/util/Recoil_err');
const invariant = require('recoil-shared/util/Recoil_invariant');
const lazyProxy = require('recoil-shared/util/Recoil_lazyProxy');
export type RecoilCallbackInterface = $ReadOnly<{
set: <T>(RecoilState<T>, ((T) => T) | T) => void,
reset: <T>(RecoilState<T>) => void,
refresh: <T>(RecoilValue<T>) => void,
snapshot: Snapshot,
gotoSnapshot: (Snapshot) => void,
transact_UNSTABLE: ((TransactionInterface) => void) => void,
}>;
declare class Sentinel {}
const SENTINEL = new Sentinel();
declare function recoilCallback<Args: $ReadOnlyArray<mixed>, Return, ExtraInterface>(store: Store, fn: ({ ...ExtraInterface,
...RecoilCallbackInterface,
}) => (...Args) => Return, args: Args, extraInterface?: ExtraInterface): Return;
declare function useRecoilCallback<Args: $ReadOnlyArray<mixed>, Return>(fn: (RecoilCallbackInterface) => (...Args) => Return, deps?: $ReadOnlyArray<mixed>): (...Args) => Return;
module.exports = {
recoilCallback,
useRecoilCallback
};