Tan*_*cia 7 javascript forms validation object yup
我有一个用于验证的对象,可能如下所示:
const exampleObject = {
foo: {
entries: {
'785bac64-c6ce-4878-bfb8-9cf5b32e2438': {
name: 'First object',
},
'117450da-315b-4676-ad23-edd94a4b6b51': {
name: 'Second object',
},
},
},
}
Run Code Online (Sandbox Code Playgroud)
对象的键entries是动态的(uuid)。我想验证name任何这些对象中的属性不是空字符串。不过,entries不是必须的,只是要求如果有条目的话,不能包含空字符串。我怎样才能用 Yup 做到这一点?
const exampleObjectValidation = Yup.object().shape({
foo: Yup.object({
entries: Yup.object({
/* what goes here ? */
})
})
})
Run Code Online (Sandbox Code Playgroud)
我是这样做的:
const exampleObjectValidation = Yup.object()
.shape({
foo: Yup.object({
entries: Yup.lazy((value) => {
if (!isEmpty(value)) {
const validationObject = { name: Yup.string().required('Item cannot be empty') }
const newEntries = Object.keys(value).reduce(
(acc, val) => ({
...acc,
[val]: Yup.object(validationObject),
}),
{}
)
return Yup.object().shape(newEntries)
}
return Yup.mixed().notRequired()
}),
}),
})
.nullable()
.notRequired()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8726 次 |
| 最近记录: |