mg-js
Version:
A set of useful functions, components and hooks.
38 lines (37 loc) • 1.21 kB
JavaScript
import { useState } from 'react';
const useObjectState = (initObject) => {
const initialization = () => {
let init = {};
if (Array.isArray(initObject)) {
initObject.forEach((key => {
if (typeof key === "object") {
for (let innerKey in key) {
init[innerKey] = key[innerKey];
}
}
else {
init[key] = "";
}
}));
return init;
}
return initObject;
};
const [state, setState] = useState(initialization);
const updateState = (keyOrObject, value) => {
if (typeof keyOrObject === "object") {
setState(Object.assign(Object.assign({}, state), keyOrObject));
}
else {
setState(Object.assign(Object.assign({}, state), { [keyOrObject]: value }));
}
};
const resetState = (resetVal) => {
for (let key in state) {
state[key] = resetVal;
}
setState(Object.assign({}, state));
};
return [state, updateState, resetState];
};
export default useObjectState;