【发布时间】:2020-06-25 17:31:05
【问题描述】:
我在验证作为(可能)空对象的属性的必填字段时遇到问题。
这是一个示例模式:
object().shape({
catalog: {
brand: string().required()
}
})
如果我尝试针对此架构验证以下对象,则会收到预期的错误:需要品牌。据我了解,为未定义的对象创建了一个默认值,它模仿了模式中对象的形状。这是我期望的行为,也是我想要的。
{ catalog: undefined }
// "catalog.brand is a required field"
但在我的情况下,我没有收到未定义但为 null 的对象。而且我不知道如何使用空值管理相同的结果。
{ catalog: null }
// No error on catalog.brand
手动将 null 转换为 undefined 是不可能的,因为我收到 null 是有充分理由的。
这是一个重现我的用例的代码框:
https://codesandbox.io/s/yup-playground-tbfcj
非常感谢您对此的帮助,谢谢:)
【问题讨论】:
-
您找到解决方案了吗?我现在正在与同样的问题作斗争。
-
@DávidM。我发现解决问题的唯一方法是在我的验证器中将 null 转换为 undefined :/我没有发布它,因为我认为这不是解决问题的好方法,但我没有其他任何东西此时此刻。它看起来像这样:目录:object().transform(nullToUndefined)。 nullToUndefined 只是检查我的值是否未定义并返回 null 就是这种情况。
-
我之前在初始值中将 null 转换为 undefined,因此您的解决方案要好得多。和工作!谢谢。
标签: javascript validation yup