在网路上看到有人推荐 Formik
不仅符合 react native 也可以在 react 上使用
文件简单易懂而且一直保有更新
就因如此,今天我们来学习如何使用吧!
npm i formik
Formik、Form、Field 及 ErrorMessage 组件。
Formik 也提供 useFormik hook 的写法使用
Formil / useFormik 的 props
必须给予 name 作为栏位识别,来对应 vlaue,因为 values, ErrorMessage, touched 物件,里面的 key 都会和 input 的 name 对应。
setFieldValue func 来调整栏位数值
可以用 onclick 事件写入 setFieldValue 来改变栏位的值
ex. setFieldValue('name',value)
const Form = () => {
return(
<View>
<Formik
initialValues={
// initialValues
}
onSubmit={(values) => {
// values to submit
}}
validationSchema={
{
// validation rules here
}
}
enableReinitialize
>
{(props) => <FormComponent />} // form UI
</Formik>
</View>
)
};
export default Form;
import { useFormik } from 'formik';
const Form = () => (
<View>
<Formik
initialValues={
// initialValues
}
onSubmit={(values) => {
// values to submit
}}
validationSchema={
{
// validation rules here
}
}
enableReinitialize
>
{(props) =>
// form UI
<View style={styles.formBox}>
<TextInput
name="title"
style={styles.input}
placeholder="Review title"
onChangeText={props.handleChange("title")}
value={props.values.title}
// 加上着个只要碰过就会检查 validationSchema
onBlur={props.handleBlur("title")}
/>
<Text style={styles.errorText}>
// 按了btn才会检查 validationSchema
{props.touched.title && props.errors.title}
</Text>
<Button
title="submit"
color="maroon"
onPress={props.handleSubmit}
/>
</View>}
</Formik>
</View>
);
export default Form;
可由官网下载debug放入 Form 标签里面
import { Debug } from './Debug';
const Form = () => (
<View>
<Formik
initialValues={
/*initialValues*/
}
onSubmit={(values) => {
/* values to submit ... */
}}
validationSchema={
{
/* validation rules here */
}
}
enableReinitializ
>
{(props) =>
<View style={styles.formBox}>
<TextInput
name="title"
style={styles.input}
placeholder="Review title"
onChangeText={props.handleChange("title")}
value={props.values.title}
// 加上着个只要碰过就会检查 validationSchema
onBlur={props.handleBlur("title")}
/>
<Text style={styles.errorText}>
// 按了btn才会检查 validationSchema
{props.touched.title && props.errors.title}
</Text>
<Button
title="submit"
color="maroon"
onPress={props.handleSubmit}
/>
// put DEBUG COMPONENT here
<Debug />
</View>}
</Formik>
</View>
);
export default Form;
Yup 是一个用於解析和验证 JS 的生成器,使用 object 的验证套件,API 受 Joi 的启发很大,但更为精简,可以用堆叠的方式加入条件,基本上 Formik 完全为了 Yup 量身打造一个可以直接设置 Yup 验证规则的属性,也就是 validationSchema
npm i yup
cd ios
pod install
import * as yup from 'yup'
const schema = yupObject().shape({
// 名字 字串 必填
name: yup.string().required(),
// 年纪 数字 最小为18 必填
age: yup.number().min(18).required(),
// 密码 字串 必填
pcode: yup.string().required(),
// 密码确认 密码输入後才检核 必填 需与密码栏位输入的资讯相同 (相依输入值)
pcodeConfirm: yup.string().when('pcode', (pcode, schema) => {
return pcode ? schema.oneOf([pcode], '密码需相同').required() : schema
})
});
Day 23 大致上先来介绍一下 Formik 跟 yup 下集来教搭配一起使用
>>: 【第二四天 - Flutter iBeacon 官方范例讲解(下)】
前面两天整理的笔记主要都在建立新的东西 今天就把修改用的指令做整理 1. revert - 重做上个...
前言 HI , 大家好 我是Mouchi也可以叫我『麻糬』 写这篇文章主要是督促自己每天要有一定的学...
文件 原文文件:Heterogeneous Memory Management (HMM) 翻译: ...
来疯虾是为了吃火锅的人应该是少数,但是,如果您来到疯虾,真的要试试他们的火锅~ 我很喜欢泰国虾,有时...
前言: 最近公司专案上刚好碰到制作汇出报表模组开发,而过往我都是透过form submit方式直接将...