@armada-inc/gatsby-wordpress-theme-libre
Version:
A Gatsby theme plugin for creating blogs from headless WordPress CMS.
38 lines (32 loc) • 1.17 kB
JSX
import { useState, useContext } from "react";
import { ArmadaFormsContext } from "../context/form-context";
export const useForm = formKey => {
const [submitting, setSubmitting] = useState(false);
const [succeeded, setSucceeded] = useState(false);
const [errors, setErrors] = useState([]);
const { client } = useContext(ArmadaFormsContext);
const handleSubmit = async data => {
setSubmitting(true);
try {
let formHeaders = new Headers();
formHeaders.append("Content-Type", "application/json");
const response = await fetch(`${client}/${formKey}`, {
method: "POST",
mode: "cors",
cache: "no-cache",
credentials: "same-origin",
body: JSON.stringify(data),
headers: formHeaders
});
if (!response.ok) {
setErrors([{ error: `error occured submitting request: ${formKey}` }]);
} else {
setSubmitting(false);
setSucceeded(true);
}
} catch (error) {
setErrors([{ error: `error occured submitting request: ${formKey}` }]);
}
};
return [{ submitting, errors, succeeded, handleSubmit }];
};