vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
43 lines (42 loc) • 1.14 kB
JavaScript
exports.__esModule = true;
exports.useValidator = useValidator;
var _react = require("react");
var _validator = require("../validator");
var validateOptions = {
strict: true,
abortEarly: true,
stripUnknown: false,
recursive: true
};
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 = (0, _react.useMemo)(function () {
var schemaOrObjectDefinitions = _schema(_validator.yup);
// @ts-ignore
if (schemaOrObjectDefinitions.__isYupSchema__) {
return schemaOrObjectDefinitions;
}
return _validator.yup.object(schemaOrObjectDefinitions);
}, _schemaDeps);
var result = (0, _react.useMemo)(function () {
var r = yupSchema.validatePlusSync(data, validateOptions);
return {
data: r.data,
valid: !r.error,
error: r.error
};
}, [].concat(_dataDeps, [yupSchema]));
return result;
}
;