[英]Why does yup throw 'cyclic dependency' at all?
我不明白为什么 yup 会抛出循环依赖。 当提到其他字段时,我们指的是值,而不是模式本身,不是吗?
不仅仅是我没有得到的东西,我发现自己在需要条件模式验证时被阻止了。
const yup = require("yup");
it("should pass", async () => {
const schema = yup.object({
name: yup.string().when("name", {
is: name => name !== "dummy",
otherwise: yup.string().email("Email or dummy.")
})
});
const obj = {
name: "dummy"
};
await expect(schema.isValid(obj)).resolves.toBe(true);
});
此外,DSL 中是否有类似or
或either
东西?
问题实际上是关于,为什么会抛出循环依赖,而不是关于这个特定情况。
解决问题:
const schema = yup.object({
name: yup.string().when([], (v, { originalValue }) =>
originalValue.name === "dummy" ? yup.string() : yup.email("Email or dummy")
)
);
但它看起来不像自然的方式,+我仍然不明白模式如何生成循环依赖。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.