I have no idea why this isn’t working, but here is my custom hook:
import { useState } from 'react';
const useInputState = (initialState: any) => {
const [inputs, setInputs] = useState(initialState);
const handleInputChange = (event: any) => {
if (event) {
event.persist();
setInputs((inputs: any) => ({
...inputs,
[event.target.name]: event.target.value,
}));
}
};
return {
inputs,
handleInputChange,
};
};
export default useInputState;
Then here is my form:
import React, { useState } from 'react';
import useInputState from '../../hooks/useInputState';
import { FormGroup, TextField, Button } from '@material-ui/core';
import { validateForm, submitForm } from '../../helperFunctions';
import FormSelect from './FormSelect';
import { formStyles } from './FormStyles/FormStyles';
const EventSignUpForm: React.FC = () => {
const { inputs, handleInputChange } = useInputState({
firstName: '',
lastName: '',
email: '',
company: '',
role: '',
});
const handleSubmit = (e: any) => {
e.preventDefault();
};
return (
<form className="EventSignUpForm" onSubmit={handleSubmit}>
<FormGroup>
<div>
<TextField
inputProps={{ style: formStyles.textField }}
label="First Name"
variant="filled"
value={inputs.firstName}
onChange={handleInputChange}
required
/>
<TextField
inputProps={{ style: formStyles.textField }}
label="Last Name"
variant="filled"
value={inputs.lastName}
onChange={handleInputChange}
required
/>
</div>
<TextField
inputProps={{ style: formStyles.textField }}
label="E-mail"
variant="filled"
type="email"
value={inputs.email}
onChange={handleInputChange}
required
/>
<div className="formTestDiv">
<TextField
inputProps={{ style: formStyles.textField }}
label="Company"
variant="filled"
value={inputs.company}
onChange={handleInputChange}
required
/>
<FormSelect
role={inputs.role}
setRole={handleInputChange}
styles={formStyles}
/>
</div>
</FormGroup>
<Button style={formStyles.button} type="submit" value="Submit">
Submit
</Button>
</form>
);
};
export default EventSignUpForm;
Can anyone see what is going on?