Web表单对于网站和应用程序至关重要。尽管本机HTML表格提供了基本功能,但管理其状态,验证和提交可能会变得复杂。反应以其组件驱动的方法,简化了形式的处理,但仍可以导致详细的代码。 formik是一个轻巧的库,优雅地解决了这些挑战,简化了状态管理,验证和提交。
本文展示了用Formik构建React表格,展示了其处理状态,验证和提交的能力。我们将从基本的React组件开始,然后集成Formik。
建立受控的反应形式
反应组件依赖于状态和道具。 HTML表单元素通过其value
属性维护内部状态。这使它们无法控制的组件 - DOM管理国家。但是,受控组件(反应管理国家)提供了更好的控制权和单一的真理来源。
简单的不受控制的HTML表格可能看起来像这样:
<div class="formRow"> <label for="email">电子邮件</label> <input type="email" id="email"> </div> <div class="formRow"> <label for="password">密码</label> <input type="password" id="password"> </div> <button type="submit">提交</button>
将其转换为受控的反应组件:
函数htmlform(){ const [email,setemail] = react.usestate(“”); const [password,setpassword] = react.usestate(“”); 返回 (); }
这种方法为形式值提供了一个真实的来源,从而更轻松地验证和性能优化。
为什么选择Formik?
存在许多形式的管理库(例如,React Hook形式,Redux表单)。 Formik通过:
- 声明方法:抽象简化了状态,验证和提交。
- Escape Hatch:在需要时提供控制,尽管其抽象。
- 共同标准的状态:将与形式相关的逻辑保持在组件中。
- 适应性:允许根据需要使用尽可能多或少的formik。
- 易用性:简单有效。
让我们将Formik集成到我们的形式组件中。
实施Formik
我们将创建一个基本的登录表单,探索三种formik使用方法:
-
useFormik
钩 - 与React上下文的Formik(
<formik></formik>
) -
withFormik
高阶组件
演示需要Formik和YUP软件包。
方法1: useFormik
钩
我们当前的形式是非功能的。 useFormik
钩提供Formik函数和变量。记录返回的值显示其内容。
我们将使用useFormik
与initialValues
和一个onSubmit
处理程序:
//反应组件 函数baseformik(){ const formik = useformik({{ 初始值:{电子邮件:“”,密码:“”}, onsubmit(values){ //表格提交逻辑 } }); 返回 (); }
绑定形式以形成元素:
//反应组件 函数baseformik(){ const formik = useformik({{ 初始值:{电子邮件:“”,密码:“”}, onsubmit(values){ //表格提交逻辑 } }); 返回 (); }
这将处理提交( onSubmit={formik.handleSubmit}
)和输入状态( value
,通过formik.getFieldProps
onChange
)。我们避免手动状态管理和活动处理。破坏getFieldProps
和handleSubmit
进一步提高了代码清晰度。
这<formik></formik>
组件提供了与内置组件这样的进一步抽象<field></field>
,,,,<form></form>
, 和<errormessage></errormessage>
。这些组件利用渲染道具模式。
从'formik'导入{formik,field,form}; 函数formikrenderprops(){ const initialValues = {email:“”,密码:“”}; const onSubmit =(values)=> { 警报(json.stringify(values,null,2)); }; 返回 ( <formik initialvalues="{initialValues}" onsubmit="{onSubmit}"> {()=>( <form> <field classname="email formField" name="email" type="email"></field> {/ * ...其他表单元素 */} </form> ) </formik> ); }
Formik处理状态和提交;我们专注于形式结构。
与Formik的形式验证
Formik在表单级别(使用validate
或validationSchema
),现场级别或手动触发器提供验证。表单级验证立即验证整个表单。 validate
用于自定义验证,而validationSchema
则使用YUP之类的库。
使用validate
的示例:
const formik = useformik({{ // ... validate :()=> { const errors = {}; if(!formik.values.email){errors.email =“必需”; } // ...其他验证 返回错误; },, // ... });
示例与yup一起validationSchema
:
const formik = useformik({{ // ... 验证chema:yup.object()。shape({{ 电子邮件:yup.string()。电子邮件(“无效电子邮件”)。必要(“必需”), // ...其他验证 }), // ... });
现场级别和手动验证也是可能的。
方法3: withFormik
高阶组件
withFormik
是包装您的表单组件的高阶组件。
实际例子
让我们说明显示错误消息并生成用户名。
显示错误消息
Formik简化了错误显示。检查errors
对象并显示消息:
<label htmlfor="email"> 电子邮件 {formik.touched.email && formik.errors.email} </label>
或使用<errormessage></errormessage>
:
<errormessage name="email"></errormessage>
生成用户名
Formik的setValues
可用于从电子邮件中生成用户名:
onsubmit(values){ formik.setValues({... values,用户名:`@$ {values.email.split(“@”)[0]}`}); }
结论
Formik大大简化了反应形式处理。本文涵盖了基础知识;探索Formik的文档,以了解高级功能和用例。
以上是使用formik处理反应中的形式的详细内容。更多信息请关注PHP中文网其他相关文章!

对于Astro,我们可以在构建过程中生成大部分网站,但是有一小部分服务器端代码可以使用Fuse.js之类的搜索功能来处理搜索功能。在此演示中,我们将使用保险丝搜索一组个人“书签”


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Atom编辑器mac版下载
最流行的的开源编辑器

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。