Skip to content

Instantly share code, notes, and snippets.

@DarkoTrpevski
Created December 23, 2020 14:43
Show Gist options
  • Save DarkoTrpevski/e99db1535b29cf114079f019e2a21439 to your computer and use it in GitHub Desktop.
Save DarkoTrpevski/e99db1535b29cf114079f019e2a21439 to your computer and use it in GitHub Desktop.
React useForm hook v1
import { useState } from "react";
export const useFormFields = (initialState: any) => {
const [values, setValues] = useState(initialState);
return [
values,
setValues,
(e: React.ChangeEvent<HTMLInputElement> | React.ChangeEvent<HTMLSelectElement>) => {
const { type, name } = e.target;
const getValue = () => {
if (type === 'checkbox') {
return (e.target as HTMLInputElement).checked;
}
else if (type === 'select-one') {
const selectedIndex = (e.target as HTMLSelectElement).options.selectedIndex;
return (e.target as HTMLSelectElement).options[selectedIndex].value
}
return e.target.value;
}
const value = getValue();
setValues({
...values,
[name]: value
});
}
];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment