UNPKG

alveron

Version:

Elm-inspired state management for React

17 lines (16 loc) 618 B
// @ts-ignore import { useOptimistic } from 'react'; import useStoreFactory from './useStoreFactory.js'; export default function useOptimisticStoreWithMiddleware(middleware = []) { function useState(initialState) { const [state, setState] = useOptimistic(initialState, (_, update) => update); function setFunctionalState(newState) { if (typeof newState === 'function') { return setState(newState(state)); } return setState(newState); } return [state, setFunctionalState]; } return useStoreFactory(useState)(middleware); }