I'm wondering why the event.preventDefault isn't working in my post request. When I click the SAVE SETTINGS button, page reloads.
If I just put a console.log after my event.preventDefault() it works just fine, so the problem is in my request I suppose.
Here's the code, any help is appreciated.
import React, { useEffect, useState } from 'react'
import Button from '../shared/formElements/Button';
import { useHttpClient } from '../shared/hooks/http-hook';
import { useForm } from '../shared/hooks/form-hook';
...
...
const Settings = () => {
const { isLoading, error, sendRequest, clearError } = useHttpClient();
const [loadedSettings, setLoadedSettings] = useState();
const [formState, inputHandler] = useForm(
{
hostname:
{
value: '',
isValid: false
},
username:
{
value: '',
isValid: false
},
password:
{
value: '',
isValid: false
},
...
...
const settingsSubmitHandler = async event => {
event.preventDefault()
try {
await sendRequest(
'http://localhost/api/settings/save',
'POST',
JSON.stringify({
hostname: formState.inputs.hostname.value,
username: formState.inputs.username.value,
password: formState.inputs.password.value,
...
...
}),
{
'Content-Type': 'application/json'
}
);
} catch (err) { }
};
And this my JSX code:
return (
<React.Fragment>
<ErrorModal error={error} onClear={clearError} />
{isLoading && <LoadingSpinner asOverlay />}
{!isLoading && loadedSettings && (
<form className="settings-form" onSubmit={settingsSubmitHandler}>
<div className="container">
...
...
<div className="col" align="center">
<Button type="submit" disabled={!formState.isValid}>SAVE SETTINGS</Button>
</div>
...