ahooks
Version:
react hooks library
15 lines (14 loc) • 610 B
JavaScript
import { useState } from 'react';
import useMemoizedFn from '../useMemoizedFn';
import { isFunction } from '../utils';
function useSetState(initialState) {
const [state, setState] = useState(initialState !== null && initialState !== void 0 ? initialState : {});
const setMergeState = useMemoizedFn((patch) => {
setState((prevState) => {
const newState = isFunction(patch) ? patch(prevState) : patch;
return newState ? Object.assign(Object.assign({}, prevState), newState) : prevState;
});
});
return [state, setMergeState];
}
export default useSetState;