vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
39 lines • 1.04 kB
JavaScript
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;
}