Spaces:
Sleeping
Sleeping
File size: 471 Bytes
05c5ed5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import { useMemo, useState } from "react";
export const useObjectState = <T extends Record<string, any>>(
initialState: T,
) => {
const [state, setState] = useState<T>(initialState);
const dispatch = useMemo(() => {
return (value: Mutate<T>) => {
setState((prev) => {
const newState = typeof value === "function" ? value(prev) : value;
return { ...prev, ...newState };
});
};
}, []);
return [state, dispatch] as const;
};
|