javascript - Netlify 未检测到 GatsbyJS 表单

标签 javascript reactjs gatsby netlify

我制作了一个简单的联系表单,其中包含姓名、电子邮件和文本框。

该表单包含 Netlify 检测所需的所有元素,例如 data-netlify="true"data-netlify-honeypot="bot-field"。其他一切似乎都遵循 Netlify/React 表单博客解释的约定。

TestContactForm.component.jsx

import React, { useState } from "react"

const TestContactForm = () => {
  const [formInput, setFormInput] = useState({
    name: "",
    email: "",
    message: "",
  })

  const onChange = e => {
    setFormInput({
      ...formInput,
      [e.target.name]: e.target.value,
    })
  }

  return (
    <form
      name="contact"
      method="post"
      action="/thanks"
      data-netlify="true"
      data-netlify-honeypot="bot-field"
    >
      <input type="hidden" name="form-name" value="contact" />
      <div hidden>
        <label>
          Don’t fill this out: <input name="bot-field" />
        </label>
      </div>

      <div>
        <label htmlFor="name">Hello, my name is</label>
        <input
          name="name"
          id="name"
          type="text"
          placeholder="Jane Doe"
          required
          value={formInput.name}
          onChange={onChange}
        />
      </div>

      <div>
        <label htmlFor="email">Hello, my name is</label>
        <input
          name="email"
          id="email"
          type="text"
          placeholder="janedoe@work.com"
          required
          value={formInput.email}
          onChange={onChange}
        />
      </div>

      <div>
        <label htmlFor="message">I want to</label>
        <textarea
          name="message"
          id="message"
          rows="5"
          maxLength="250"
          placeholder="briefly share an idea about..."
          required
          value={formInput.message}
          onChange={onChange}
        ></textarea>
      </div>

      <button type="submit">SEND</button>
    </form>
  )
}

export default TestContactForm

我在 Netlify 托管的其他网站上的表单上使用了几乎相同的代码,并且它们工作得很好。

//thanks/404 均位于 内的同一个 pages 文件夹内源代码

我不确定这个出了什么问题。

有人可以指出这里的错误是从哪里产生的吗?

谢谢!

最佳答案

解决方案

事实证明,错误原因与 Netlify 或 Gatsby 无关。

这与我使用的动画库有关,它是 react-spring

我使用 useTransition Hook 为联系人卡片制作淡入/淡出动画,该 Hook 在开始时默认为 false。这实际上将联系人卡片从 DOM 元素中取出,因此 Netlify 无法检测到它。作为解决方案,我转而使用 useSpring Hook ,它使用 opacity: 0pointer-events: none 隐藏联系人卡片。

这解决了问题。

关于javascript - Netlify 未检测到 GatsbyJS 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59064407/

相关文章:

具有多个参数的 Gatsby 动态路由

http-proxy - Wordpress Rest API 反向代理

javascript - 可能的 javascript ajax 调用竞争条件

javascript - 如何使用 parcel-bundler 将公共(public)目录中的所有文件添加到构建目录

javascript - 如何在 React ChartJS 2 的线条图中隐藏一些点?

javascript - Action 创建者是否有必要返回 Action ?

reactjs - 使用 Netlify CMS 的 Gatsby 镜像 - 字段 "image"不得有选择,因为类型 "String"没有子字段

javascript - 无法读取未定义的属性摆动

javascript - 对值由 jqueryui slider 控制的三个文本字段求和

javascript - iframe 最初未完全加载,但刷新后可以工作