フォームの値を netlify フォームに保存しようとしています。gatsby の静的サイトの開発では機能コンポーネントを使用し、フォームにはブースト ストラップ モーダルを使用しています。値を netlify 形式で保存しようとしています。netlify フォームと通信するために必要なフィールドとタグを追加しました。通常の html フォームも使用してみました。しかし、netlify フォームの下にあるフォームの値を確認できませんでした。結果を達成するために私を導くことができますか?以下にコードを掲載しました。前もって感謝します。
function Home() {
const [formData, setFormData] = useState({
name: "",
email: "",
linkedin: "",
skillset: "",
experience: "",
})
const [show, setShow] = useState(false)
const handleShow = () => setShow(true)
const handleChange = e => {
setFormData({
...formData,
[e.target.name]: e.target.value,
})
}
const handleClose = () => setShow(false)
const encode = data => {
return Object.keys(data)
.map(key => encodeURIComponent(key) + "=" + encodeURIComponent(data[key]))
.join("&")
}
const handleonSubmit = e => {
fetch("/", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: encode({ "form-name": "contact", ...formData }),
})
.then(() => alert("Success!"))
.catch(error => alert(error))
e.preventDefault()
}
return (
<Layout>
<div className={Styles.content}>
<Container>
<Row>
<div>
<div
className="d-flex align-items-center justify-content-center"
style={{ height: "100vh" }}
>
<Button variant="primary" onClick={handleShow}>
Launch Form modal
</Button>
</div>
<Modal
show={show}
onHide={handleClose}
style={{ float: "right" }}
// onSubmit={handleSubmit}
>
<Modal.Header closeButton>
<Modal.Title>Details:</Modal.Title>
</Modal.Header>
<Modal.Body>
<Form data-netlify="true" onSubmit={handleonSubmit}>
{/* <input type="hidden" name="contact" value="Form-Details" /> */}
<Form.Group controlId="formBasicName">
<Form.Label>Name</Form.Label>
<Form.Control
type="text"
name="name"
placeholder="Your Name"
value={formData.name}
onChange={handleChange}
/>
</Form.Group>
<Form.Group controlId="formBasicEmail">
<Form.Label>Email address</Form.Label>
<Form.Control
type="email"
name="email"
placeholder="Enter email"
value={formData.email}
onChange={handleChange}
/>
</Form.Group>
<Button type="submit">Submit</Button>
</Form>
</Modal.Body>
</Modal>
</div>
</Container>
</div>
</Layout>