react-context-toolkit
Version:
Toolkit for React Context API heavily inspired by @reduxjs/toolkit and react-redux
35 lines (34 loc) • 1.12 kB
TypeScript
import React from 'react';
import { Reducer } from '@reduxjs/toolkit';
declare type SliceToInitialState<Slice extends {
name: PropertyKey;
reducer: Reducer;
}> = {
[K in Slice['name']]: ReturnType<Extract<Slice, {
name: K;
}>['reducer']>;
};
export declare function createStore<Name extends PropertyKey, Slices extends Array<{
name: Name;
reducer: Reducer;
}>>(slices: Slices | []): {
StateProvider: React.FunctionComponent<{}>;
useSelector: <T>(selector: (state: SliceToInitialState<Slices[number]>) => T) => T;
useDispatch: () => (action: {
payload: any;
type: string;
}) => void;
Store: React.Context<{
state: SliceToInitialState<Slices[number]>;
dispatch: (action: {
payload: any;
type: string;
}) => void;
}>;
initialState: SliceToInitialState<Slices[number]>;
rootReducer: (state: SliceToInitialState<Slices[number]>, action: {
payload: any;
type: string;
}) => SliceToInitialState<Slices[number]>;
};
export { createSlice, PayloadAction } from '@reduxjs/toolkit';