将联系表单添加到 React 应用程序可能需要编写服务器端代码来处理表单提交,但是使用 Netlify Forms,您可以从逻辑中解脱出来,因为当您的网站运行时,它会为您完成所有幕后工作部署在Netlify上。
站在用户的角度思考问题,与客户深入沟通,找到永新网站设计与永新网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站建设、成都做网站、企业官网、英文网站、手机端网站、网站推广、空间域名、网页空间、企业邮箱。业务覆盖永新地区。
要想学习本教程,您应该熟悉 React、Git 和 GitHub。您还应该有一个 Netlify 并且在您的计算机上安装了 Node。如果您在设置方面需要任何帮助,可以查阅我们的指南,了解如何使用 nvm 安装 Node。
在本教程结束时,您将知道如何执行以下操作:
GitHub 上面提供了本教程的完整指南。
Netlify Forms 是 Netlify 的一项功能,用于管理和处理表单提交,而无需编写任何服务器端代码。通过向 HTML 表单标签添加一个简单的属性,您就可以启动并运行 Netlify Forms。表单也可以使用 JavaScript 异步提交,使其成为 Vue、React 和其他现代框架支持的网站的绝佳伴侣。
Netlify Forms 可以免费开始使用,但在免费计划中每个网站每月提交 100 个别表单的限制,并且在使用免费套餐时不包括后台功能和基于角色的访问控制等一些功能。
要超出表单提交限制或使排除的功能可用,您必须升级到不同的计划。您可以在Netlify 定价页面上执行此操作。
Netlify 表单可以与无状态表单(一种不使用状态来处理其数据的表单)和有状态表单(一种使用状态来处理其数据的表单)集成。在本教程中,我们将首先创建一个无状态表单来演示如何将 Netlify Forms 与其集成。但稍后,我们会将无状态表单重构为有状态表单,其中我们还将与 Neltify Forms 集成。
让我们重新创建和设置一个新的 React 应用开始。
在终端中输入以下命令来创建一个新的 React 应用程序:
$ npx create-react-app netlify_forms_app
这里我们的应用程序的名称是netlify_forms_app,但你可以给它任何你想要的名称,只要它不是一个受限的 npm 名称。安装完成后,切换到新创建的目录,然后npm start在终端中使用命令启动应用程序。
让我们稍微清理一下(可选)我们的应用程序。在src应用程序的目录中,删除以下文件:
我们删除了这些文件,因为它们在我们的构建中与我们无关。我们也可以删除reportWebVitals文件。这样做要求我们还reportWebVitals从index.js文件中删除 import 语句和函数调用,以便我们的 React 应用程序成功编译。同样,这都是可选的,所以如果你愿意,你可以跳过这个。
现在,清理App.js文件,使其看起来像这样:
// src/App.js
import './App.css';
function App() {
return (
);
}
export default App;
在src我们的 React 应用程序的目录中,创建一个Form.js文件并向其中添加以下代码行:
// src/Form.js
import './form.css'
export default function Form() {
return (
在这里,我们有一个无状态的存在 React 表单。现在,转到目录App.js中的文件src并呈现表单。该App.js文件应如下所示:
import './App.css';
import Form from './Form'
function App() {
return (
在src目录中,创建一个form.css文件并添加以下样式:
// src/form.css
.contactForm{
padding: 10px;
width: 90%;
max-width: 400px;
margin: 30px auto;
border-radius: 10px;
display: flex;
flex-direction: column;
gap: 20px;
}
.contactForm input, button, textarea{
height: 50px;
padding-left: 5px;
font-size: 18px;
}
.contactForm textarea{
height: 100px;
}
无需编写任何花哨的 CSS,但如果您愿意,可以添加一些调整。使用我们添加的样式,我们的 HTML 表单现在看起来如下图所示。
要查看结果,您需要切换到netlify_forms_app文件夹并启动服务器:
cd netlify_forms_app
npm start
将打开一个浏览器,您可以在http://localhost:3000查看结果。
无状态 React 表单的一个完美示例是我们之前创建的那个。在这种形式中,我们的输入值不受状态控制。在本节中,我们将学习如何使用 Netlify Forms 将联系表单添加到无状态的 React 应用程序。
使我们的表单能够与 Netlify Forms 一起工作的第一步是将表单的静态 HTML 版本添加到我们的 React 应用程序目录中的index.html文件中。public为什么我们需要添加这个表单?添加这个 HTML 表单将有助于 Netlify 检测我们的 JSX 表单,因为后处理机器人只能解析 HTML。
对于此示例,我们将在打开文件中的标记后立即添加此 HTML 表单index.html:
在这种形式中需要注意两个属性:name和netlify。该name属性将使 Netlify 能够与我们的 JSX 表单连接,而该netlify属性将使 Nelify 的机器人能够解析我们的表单。我们还使用该hidden属性对用户隐藏表单。无需向此表单添加标签或提交按钮,因为它对我们的网站是隐藏的。
在目录中的Form.js文件中src,添加一个隐藏的 input 元素,其name属性设置为form-name,并且该value属性等于我们表单的 HTML 版本的名称。这些属性是使我们的表单与 Netlify Forms 一起工作所必需的:
// src/Form.js
type='hidden'
name='form-name'
value='contactForm' />
我们表单的最终版本现在看起来像这样:
// src/Form.js
这个表单还需要一个步骤才能开始工作:将我们的 React 应用程序部署到 Netlify。我们将在下一节中介绍这一点。
我们可以使用GitHub之类的版本控制系统将我们的站点部署到 Netlify ,也可以使用拖放的方法,这需要我们将build运行npm run build命令创建的文件传输到 Netlify拖放页面。以下部分将介绍这两种部署方法,但在本教程中,我们将使用 GitHub 进行部署。
从 GitHub 部署我们的 React 应用程序将为我们设置持续部署,这意味着对我们的存储库所做的更改将自动触发我们站点的重新部署,这比使用拖放方法具有优势。
为了能够从 GitHub 进行部署,我们必须首先让我们的 React 应用程序可用。转到 GitHub 并创建一个新的存储库。
对于本教程,我们将存储库命名为“NelifyForms”。现在在页面底部,单击Create Repository按钮,我们将被重定向到新创建的存储库页面。
现在,这个存储库是空的。那是因为我们还没有将我们的 React 应用程序推送到它。为此,请在终端中输入以下命令:
$ git add *
$ git commit -m 'netlify forms with stateless form'
$ git remote add origin
$ git push -u origin master
这些命令将创建一个新的提交,将我们连接到我们的 GitHub 存储库,最后将我们的 React 应用程序推送到它。
确保更换使用新创建的 GitHub 存储库的 URL。这是一张图片,显示了在哪里可以找到新创建的存储库的 URL。
运行上述git命令后,刷新浏览器。你会发现我们的 React 应用已经被推送到了 GitHub。
现在我们的 React 应用程序在 GitHub 上可用,是时候在 Netlify 上部署它了。登录到您的 Netlify 帐户,转到仪表板,然后单击“从 Git 新建站点”按钮。我们将被带到创建新站点页面。
单击持续部署部分下的GitHub按钮。然后我们被重定向到授权页面,Netlify 将在该页面请求访问 GitHub。授予 Netlify 访问权限后,我们将看到如下所示的页面。
现在,我们之前创建的NetlifyForms存储库没有显示在存储库列表中,因为我们还没有配置 Netlify 来访问它。
为此,请单击页面底部的在 GitHub 上配置 Netlify 应用程序链接。我们将看到如下所示的页面。
滚动到存储库访问部分下的页面底部,然后单击选择存储库按钮。我们将看到我们的 GitHub 存储库列表。
选择NelifyForms存储库,然后单击保存以授予 Netlify 访问此存储库的权限。保存后,我们将被重定向到 Netlify 上的创建新站点页面。
我们的NetlifyForms存储库现在显示在列表中。点击它,我们会看到这样的页面。
在此页面上,我们可以设置站点的构建和部署选项,例如更改要部署的 Git 分支,或用于部署站点的命令。但是没有必要这样做,因为默认情况下一切看起来都很好。
最后,要将我们的站点部署到 Netlify,滚动到页面底部并单击部署站点按钮。部署可能需要一段时间,但一旦完成,我们将在站点仪表板页面的右上角看到指向我们站点的链接。
至此,我们的 React 应用程序已成功从 GitHub 部署到 Netlify。当我们单击链接时,我们将看到我们构建的 React 表单。
使用这种方法部署更简单,但缺点是我们的站点不会设置为持续部署。如果我们的 React 应用程序在 GitHub、GitLab 或 Bitbucket 上可用,我们可以在部署后手动设置。
要使用拖放方法,我们必须首先构建我们的 React 应用程序。打开终端并导航到我们的 React 应用程序所在的目录,然后输入以下命令:
$ npm run build
build构建完成后,在 React 应用程序的根目录中应该有一个名为的新文件夹。我们的目录结构现在看起来像这样:
> build
> node_modules
> public
> src
现在剩下的就是将这个文件夹拖放到Netlify的拖放页面中。
我们可以通过在系统文件资源管理器中导航到我们的 React 应用程序的位置来做到这一点,然后将build文件夹拖放到Netlify 的拖放页面。
这是一个 GIF 来说明这一点。
一旦我们将文件夹拖放build到 Netlify,它将被上传和部署。然后我们将被重定向到我们网站的仪表板页面。已部署站点的 URL 位于页面的右上角。
单击该 URL,您将看到我们构建的联系表。填写表格并点击提交按钮。您将被重定向到感谢确认页面。
凉爽的!我们已经成功地使我们的无状态 React 表单与 Netlify Forms 一起工作。现在,通过我们的应用程序提交的每个表单都由 Netlify Forms 处理。
目前,当提交新表单时,我们不会通过电子邮件收到任何通知,因为我们还没有设置表单提交将被发送到的电子邮件地址。我们将很快介绍这一点。
Netlify 不仅使添加联系表格变得简单,而且还包括通过我们的联系表格提交的内容可以被删除、标记为垃圾邮件或下载的功能。还有空间将我们的表单与 Netlify 的无服务器功能集成。你可以在这里阅读。
要访问提交管理页面,请转到之前在 Netlify 上部署的站点仪表板页面,然后单击导航栏中的表单链接。
单击表单链接后,您将被重定向到表单仪表板页面。
点击Active forms部分下的contactForm以查看通过我们的联系表提交的管理页面。
在本节中,我们将介绍如何添加通知功能,使我们能够接收新表单提交的电子邮件通知。我们还将介绍如何自定义表单成功提交后显示的感谢确认页面。
在我们站点的仪表板中,导航到站点设置>表单>表单通知。然后单击添加通知按钮。将弹出一个菜单。
Netlify 为我们提供了三个关于如何接收通知的选项。在本教程中,我们将使用电子邮件通知。
单击电子邮件通知并填写出现的表格。
我们更关心的字段是Email to notify字段。确保输入您希望接收电子邮件通知的电子邮件地址。
现在,当我们打开已部署的站点 URL 并提交新表单时,我们应该会收到一封电子邮件通知。
自定义确认页面,第一步是为目录中文件的元素添加一个action属性:formindex.htmlpublic。
// public/index.htmm
下一步是创建一个负责发布表单提交的方法。为此,我们必须首先onSubmit向表单添加一个事件侦听器:
// src/Form.js
...
此表单只有在我们为其部署和设置电子邮件通知时才能正常工作。这在前面的部分中有所介绍。
我们将在本节中使用的 React 钩子是useState钩子。该useState钩子将让我们向功能组件添加状态。
要在我们之前创建useState的组件中使用钩子Form,我们首先需要导入useState钩子,然后将基于类的Form组件转换为函数式组件。
该Form.js文件应如下所示:
// src/Form.js
import './form.css'
import {useState} from 'react'
const encode = (data) => {
return Object.keys(data)
.map(key => encodeURIComponent(key) + '=' + encodeURIComponent(data[key])).join('&');
}
export default function Form (){
const [state, setState] = useState({name: '', email: '', message: '' })
const handleChange = e =>
setState({...state, [e.target.name]: e.target.value })
const handleSubmit = e => {
fetch('/', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: encode({ 'form-name': 'contactForm', ...state })
})
.then(() => alert('Success!'))
.catch(error => alert(error))
e.preventDefault()
}
return (
现在,为联系表单部署和设置电子邮件通知以开始工作。
我希望你发现这个简单的练习表格教程很有用。我希望你会同意 Netlify 提供了一个可行的选项来向你的 React 应用程序添加一个联系表单——它可以节省你的时间并让你不必处理服务器端编码。
网站栏目:使用NetlifyForms将联系表单添加到React应用程序
网站路径:http://www.36103.cn/qtweb/news16/17566.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联