Formilk

1、Formilk 简介

(1)介绍

        增强表单处理能力. 简化表单处理流程。
[ 官⽹](https://jaredpalmer.com/formik/)[ 官⽹ ](https://jaredpalmer.com/formik/)
[        官网 (https://jaredpalmer.com/formik/)

(2)下载

        npm install formik

        npm install yum //表单验证

2、Formilk 示例

import React from "react";
import { Formik, Form, Field, ErrorMessage, useField  } from "formik"
import * as Yup from "yup"


function MyInput ({label, ...props}) {
  const [field, meta] = useField(props)
  return <div>
    <label htmlFor={props.id}>{label}</label>
    <input {...field} {...props}/>
    { meta.touched && meta.error ? <div>meta.error</div> : null }
  </div>
}

function Checkbox({label, ...props}) {
  const [filed, meta, helper] = useField(props);
  const { value } = meta;
  const { setValue } = helper;
  const handleChange = () => {
    const set = new Set(value);
    if (set.has(props.value)) {
      set.delete(props.value);
    } else {
      set.add(props.value);
    }
    setValue([...set])
  }
  return <div>
    <label htmlFor="">
      <input checked={value.includes(props.value)} type="checkbox" {...props} onChange={handleChange}/>
      { label }
    </label>
  </div>
}

function App() {
    const initialValues = {username:"", content:"我是内容", subject:"Java", hobbies: ['足球', '篮球'],password:""};
    const handleSubmit = (values) => {
      console.log(values)
    };
    const schema = Yup.object({
      username: Yup.string()
        .max(15, "用户名的长度不能大于15")
        .required("请输入用户名"),
      password: Yup.string()
       .max(6, "密码的长度不能小于6")
        .required("请输入密码")
    });
 
   return (
    <Formik
      initialValues={initialValues}
      onSubmit={handleSubmit}
      validationSchema={schema}
    >
      <Form>
        <Field name="username"/>
        <ErrorMessage name="username"/>

        <Field name="content" as="textarea"/>
        <Field name="subject" as="select">
          <option value="前端">前端</option>
          <option value="java">java</option>
        </Field>

         // 自定义组件
        <MyInput id="myPass" label="密码" type="password" name="password" placeholder="请输入密码" />


        <Checkbox value="足球" label="足球" name="hobbies"/>
        <Checkbox value="篮球" label="篮球" name="hobbies"/>
        <Checkbox value="橄榄球" label="橄榄球" name="hobbies"/>

        <input type="submit"/>
      </Form>
    </Formik>
  )
}

export default App;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值