UNPKG

vtils

Version:

一个面向业务的 JavaScript/TypeScript 实用程序库。

39 lines 1.04 kB
import { useMemo } from 'react'; import { yup as _yup } from "../validator/index.js"; var validateOptions = { strict: true, abortEarly: true, stripUnknown: false, recursive: true }; export function useValidator(data, dataDeps, schema, schemaDeps) { var _dataDeps; var _schema; var _schemaDeps; if (Array.isArray(dataDeps)) { _dataDeps = dataDeps; _schema = schema; _schemaDeps = schemaDeps || []; } else { _dataDeps = []; _schema = dataDeps; _schemaDeps = schema || []; } var yupSchema = useMemo(function () { var schemaOrObjectDefinitions = _schema(_yup); // @ts-ignore if (schemaOrObjectDefinitions.__isYupSchema__) { return schemaOrObjectDefinitions; } return _yup.object(schemaOrObjectDefinitions); }, _schemaDeps); var result = useMemo(function () { var r = yupSchema.validatePlusSync(data, validateOptions); return { data: r.data, valid: !r.error, error: r.error }; }, [].concat(_dataDeps, [yupSchema])); return result; }