@fruits-chain/react-native-xiaoshu
Version:
🌈 React Native UI library
40 lines (34 loc) • 974 B
text/typescript
import type { FormInstance } from 'rc-field-form'
import { useForm as useRcForm } from 'rc-field-form'
import { useMemo } from 'react'
import { Keyboard } from 'react-native'
import Toast from '../toast'
export default function <Values = any>(
form?: FormInstance<Values>,
): [FormInstance<Values>] {
const [rcForm] = useRcForm<Values>()
const wrapForm: FormInstance<Values> = useMemo(
() =>
form ?? {
...rcForm,
submit: (...args) => {
// 触发提交的时候收齐软键盘
Keyboard.dismiss()
rcForm.submit(...args)
},
validateFields: (...args) => {
return new Promise((resolve, reject) => {
rcForm
.validateFields(...args)
.then(resolve)
.catch(e => {
Toast(e.errorFields[0].errors[0])
reject(e)
})
})
},
},
[form, rcForm],
)
return [wrapForm]
}