形式
处理表单提交的包装器组件。
使用onSubmit作为表单提交时的回调函数。
进口跨度><跨度class="token punctuation">{跨度>形式<跨度class="token punctuation">,跨度>FormLayout<跨度class="token punctuation">,跨度>复选框<跨度class="token punctuation">,跨度>文本框<跨度class="token punctuation">,跨度>按钮<跨度class="token punctuation">}跨度><跨度class="token keyword">从跨度><跨度class="token string">“@shopify /北极星”跨度><跨度class="token punctuation">;跨度><跨度class="token keyword">进口跨度><跨度class="token punctuation">{跨度>useState<跨度class="token punctuation">,跨度>useCallback<跨度class="token punctuation">}跨度><跨度class="token keyword">从跨度><跨度class="token string">“反应”跨度><跨度class="token punctuation">;跨度><跨度class="token keyword">函数跨度><跨度class="token function">FormOnSubmitExample跨度><跨度class="token punctuation">(跨度><跨度class="token punctuation">)跨度><跨度class="token punctuation">{跨度><跨度class="token keyword">常量跨度><跨度class="token punctuation">[跨度>通讯<跨度class="token punctuation">,跨度>setNewsletter<跨度class="token punctuation">]跨度><跨度class="token operator">=跨度><跨度class="token function">useState跨度><跨度class="token punctuation">(跨度><跨度class="token boolean">假跨度><跨度class="token punctuation">)跨度><跨度class="token punctuation">;跨度><跨度class="token keyword">常量跨度><跨度class="token punctuation">[跨度>电子邮件<跨度class="token punctuation">,跨度>setEmail<跨度class="token punctuation">]跨度><跨度class="token operator">=跨度><跨度class="token function">useState跨度><跨度class="token punctuation">(跨度><跨度class="token string">”跨度><跨度class="token punctuation">)跨度><跨度class="token punctuation">;跨度><跨度class="token keyword">常量跨度>handleSubmit<跨度class="token operator">=跨度><跨度class="token function">useCallback跨度><跨度class="token punctuation">(跨度><跨度class="token punctuation">(跨度><跨度class="token parameter">_event跨度><跨度class="token punctuation">)跨度><跨度class="token operator">=>跨度><跨度class="token punctuation">{跨度><跨度class="token function">setEmail跨度><跨度class="token punctuation">(跨度><跨度class="token string">”跨度><跨度class="token punctuation">)跨度><跨度class="token punctuation">;跨度><跨度class="token function">setNewsletter跨度><跨度class="token punctuation">(跨度><跨度class="token boolean">假跨度><跨度class="token punctuation">)跨度><跨度class="token punctuation">;跨度><跨度class="token punctuation">}跨度><跨度class="token punctuation">,跨度><跨度class="token punctuation">[跨度><跨度class="token punctuation">]跨度><跨度class="token punctuation">)跨度><跨度class="token punctuation">;跨度><跨度class="token keyword">常量跨度>handleNewsLetterChange<跨度class="token operator">=跨度><跨度class="token function">useCallback跨度><跨度class="token punctuation">(跨度><跨度class="token punctuation">(跨度><跨度class="token parameter">价值跨度><跨度class="token punctuation">)跨度><跨度class="token operator">=>跨度><跨度class="token function">setNewsletter跨度><跨度class="token punctuation">(跨度>价值<跨度class="token punctuation">)跨度><跨度class="token punctuation">,跨度><跨度class="token punctuation">[跨度><跨度class="token punctuation">]跨度><跨度class="token punctuation">,跨度><跨度class="token punctuation">)跨度><跨度class="token punctuation">;跨度><跨度class="token keyword">常量跨度>handleEmailChange<跨度class="token operator">=跨度><跨度class="token function">useCallback跨度><跨度class="token punctuation">(跨度><跨度class="token punctuation">(跨度><跨度class="token parameter">价值跨度><跨度class="token punctuation">)跨度><跨度class="token operator">=>跨度><跨度class="token function">setEmail跨度><跨度class="token punctuation">(跨度>价值<跨度class="token punctuation">)跨度><跨度class="token punctuation">,跨度><跨度class="token punctuation">[跨度><跨度class="token punctuation">]跨度><跨度class="token punctuation">)跨度><跨度class="token punctuation">;跨度><跨度class="token keyword">返回跨度><跨度class="token punctuation">(跨度><跨度class="token operator"><跨度>形式onSubmit<跨度class="token operator">=跨度><跨度class="token punctuation">{跨度>handleSubmit<跨度class="token punctuation">}跨度><跨度class="token operator">>跨度><跨度class="token operator"><跨度>FormLayout<跨度class="token operator">>跨度><跨度class="token operator"><跨度>复选框标签<跨度class="token operator">=跨度><跨度class="token string">“注册北极星通讯”跨度>检查<跨度class="token operator">=跨度><跨度class="token punctuation">{跨度>通讯<跨度class="token punctuation">}跨度>onChange<跨度class="token operator">=跨度><跨度class="token punctuation">{跨度>handleNewsLetterChange<跨度class="token punctuation">}跨度><跨度class="token operator">/跨度><跨度class="token operator">>跨度><跨度class="token operator"><跨度>文本框的值<跨度class="token operator">=跨度><跨度class="token punctuation">{跨度>电子邮件<跨度class="token punctuation">}跨度>onChange<跨度class="token operator">=跨度><跨度class="token punctuation">{跨度>handleEmailChange<跨度class="token punctuation">}跨度>标签<跨度class="token operator">=跨度><跨度class="token string">“电子邮件”跨度>类型<跨度class="token operator">=跨度><跨度class="token string">“电子邮件”跨度>自动完成<跨度class="token operator">=跨度><跨度class="token string">“电子邮件”跨度>helpText<跨度class="token operator">=跨度><跨度class="token punctuation">{跨度><跨度class="token operator"><跨度>跨度<跨度class="token operator">>跨度>我们将使用<跨度class="token keyword">这跨度>电子邮件地址,通知您北极星未来的变化<跨度class="token punctuation">。跨度><跨度class="token operator"><跨度><跨度class="token operator">/跨度>跨度<跨度class="token operator">>跨度><跨度class="token punctuation">}跨度><跨度class="token operator">/跨度><跨度class="token operator">>跨度><跨度class="token operator"><跨度>按钮提交<跨度class="token operator">>跨度>提交<跨度class="token operator"><跨度><跨度class="token operator">/跨度>按钮<跨度class="token operator">>跨度><跨度class="token operator"><跨度><跨度class="token operator">/跨度>FormLayout<跨度class="token operator">>跨度><跨度class="token operator"><跨度><跨度class="token operator">/跨度>形式<跨度class="token operator">>跨度><跨度class="token punctuation">)跨度><跨度class="token punctuation">;跨度><跨度class="token punctuation">}跨度>
道具
想让这个功能变得更好吗?请分享你的反馈。
接口
FormProps
- acceptCharset<跨度>?跨度>跨度><跨度class="PropsTable_Valuex__TSgMZ">字符串跨度>跨度>
-
空格分隔的字符编码列表。
- 行动<跨度>?跨度>跨度><跨度class="PropsTable_Valuex__TSgMZ">字符串跨度>跨度>
-
提交时在哪里发送表单数据。
- 自动完成<跨度>?跨度>跨度><跨度class="PropsTable_Valuex__TSgMZ">布尔跨度>跨度>
-
授予浏览器自动完成输入元素的能力。
- 孩子们<跨度>?跨度>跨度><跨度class="PropsTable_Valuex__TSgMZ">反应跨度>跨度>。<跨度class="PropsTable_SyntaxType__UfemH">ReactNode跨度>跨度>跨度>
-
要在表单中显示的内容。
- encType<跨度>?跨度>跨度><跨度class="PropsTable_Valuex__TSgMZ">“应用程序/ x-www-form-urlencoded”跨度>|<跨度class="PropsTable_SyntaxString__dOIZE">“多部分/格式”跨度>|<跨度class="PropsTable_SyntaxString__dOIZE">“文本/普通”跨度>跨度>
-
向服务器提交内容时的媒体类型。
- implicitSubmit<跨度>?跨度>跨度><跨度class="PropsTable_Valuex__TSgMZ">布尔跨度>跨度>
-
切换表单提交时按Enter键。默认为true。
- 方法<跨度>?跨度>跨度><跨度class="PropsTable_Valuex__TSgMZ">“职位”跨度>|<跨度class="PropsTable_SyntaxString__dOIZE">“得到”跨度>|<跨度class="PropsTable_SyntaxString__dOIZE">“行动”跨度>跨度>
-
用于提交表单的方法。
- 名字<跨度>?跨度>跨度><跨度class="PropsTable_Valuex__TSgMZ">字符串跨度>跨度>
-
表单的唯一名称。
- 已经<跨度>?跨度>跨度><跨度class="PropsTable_Valuex__TSgMZ">布尔跨度>跨度>
-
表单在提交时是否被验证。
- preventDefault<跨度>?跨度>跨度><跨度class="PropsTable_Valuex__TSgMZ">布尔跨度>跨度>
-
阻止默认的表单操作。
- 目标<跨度>?跨度>跨度><跨度class="PropsTable_Valuex__TSgMZ">字符串跨度>跨度>
-
在何处显示表单提交后的响应。
- onSubmit跨度><跨度class="PropsTable_Valuex__TSgMZ">(<跨度>事件跨度>:<跨度class="PropsTable_SyntaxType__UfemH">反应跨度>跨度>。<跨度class="PropsTable_SyntaxType__UfemH">FormEvent跨度>跨度><<跨度class="PropsTable_SyntaxType__UfemH">HTMLFormElement跨度>跨度>>)=><跨度class="PropsTable_SyntaxType__UfemH">无效跨度>跨度>跨度>
-
提交表单时回调。
最佳实践
form组件应该用于:
- 环绕所有表单输入元素
- 模拟原生HTML
形式
元素的行为onSubmit
回调
相关的组件
可访问性
表单组件将内容封装在HTML中< >形式
元素。这有助于支持使用不同交互和浏览模式的辅助技术。
表单只能有一个提交按钮,并且必须位于表单的末尾。默认情况下,添加到表单中的按钮被赋予类型
属性设置为按钮
避免冲突。要将按钮改为提交按钮(type = "提交"
),设置提交
按下按钮。
键盘支持
默认情况下,implicitSubmit
Prop被设置为真正的
。这允许商家提交表单输入/返回当焦点位于表单内的任何文本字段时,此键。这为键盘用户提供了一个快捷方式。如果此行为不适合表单,则将该道具设置为假
。