UNPKG

use-immer

Version:
15 lines (14 loc) 1.1 kB
import { Draft, nothing } from "immer"; import { Dispatch } from "react"; export declare type DraftFunction<S> = (draft: Draft<S>) => void; export declare type Updater<S> = (arg: S | DraftFunction<S>) => void; export declare type ImmerHook<S> = [S, Updater<S>]; export declare function useImmer<S = any>(initialValue: S | (() => S)): ImmerHook<S>; export declare type ImmerReducer<S, A> = (draftState: Draft<S>, action: A) => void | (S extends undefined ? typeof nothing : S); /** * @deprecated Use `ImmerReducer` instead since there is already a `Reducer` type in `@types/react`. */ export declare type Reducer<S = any, A = any> = ImmerReducer<S, A>; export declare function useImmerReducer<S, A, I>(reducer: ImmerReducer<S, A>, initializerArg: S & I, initializer: (arg: S & I) => S): [S, Dispatch<A>]; export declare function useImmerReducer<S, A, I>(reducer: ImmerReducer<S, A>, initializerArg: I, initializer: (arg: I) => S): [S, Dispatch<A>]; export declare function useImmerReducer<S, A>(reducer: ImmerReducer<S, A>, initialState: S, initializer?: undefined): [S, Dispatch<A>];