@zohodesk/hooks
Version:
Unified Component Library - Hooks
19 lines (17 loc) • 657 B
JavaScript
// Use this hook when the state is object and need to merge the new state object when state update
import { useState, useCallback } from 'react';
export default function useMergeState() {
let initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
const [state, setState] = useState(initialState);
const setMergeState = useCallback(newState => setState(prevState => {
const _prevState = prevState;
let _newState = newState;
if (typeof newState === 'function') {
_newState = newState(prevState);
}
return { ..._prevState,
..._newState
};
}), []);
return [state, setMergeState];
}