表单校验

Dahlia 的表单校验非常简单,并且具有非常强的扩展性。

用法

import React from 'react'
import { createForm, required, min } from 'dahlia/form'

const basicForm = createForm({
  initialValues: {
    email: 'foo@bar.com',
    password: '',
  },
+  validator: {
+    email: [required('require email'), min(6, 'email too short')],
+    password: [required('need password'), min(6, 'password too short')],
+  },
  onSubmit: async (values, { setSubmitting }) => {
    alert(JSON.stringify(values, null, 2))
    setSubmitting(false)
  },
})

export const Home = () => {
  const { submitting } = basicForm.useForm()

  return (
    <form ref={basicForm.useRef()}>
      <input name="email" type="text" />
      <input name="password" type="text" />
      <button type="submit" disabled={submitting}>
        submit
      </button>
    </form>
  )
}

自定义校验器

实现一个 url 校验器:

import isUrl from 'util-is-url'

// an url validtor
const url = (message?: string) => (value: any) => {
  if (isUrl(value)) return { ok: true }
  return { ok: false, message: message || '' }
}

使用:

const basicForm = createForm({
  validator: {
    url: [url('should be a valid url ')],
  },
})

Last updated

Was this helpful?