Почему yup вообще выбрасывает 'cycli c зависимость? - PullRequest
0 голосов
/ 21 января 2020

Я не понимаю, почему yup вообще выбрасывает зависимость cycli c. Когда мы ссылаемся на другие поля, мы ссылаемся на значение, а не на саму схему, не так ли?

Больше, чем просто то, чего я не получаю, я обнаружил, что заблокирован, требуя условной проверки схемы.

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);
});

codesandbox

Кроме того, нет ничего похожего на or или either в DSL?

Вопрос действительно о том, почему yup выбрасывает циклическую c зависимость, не об этом конкретном c случае.

1 Ответ

0 голосов
/ 22 января 2020

Обойти проблему с помощью:

const schema = yup.object({
    name: yup.string().when([], (v, { originalValue }) => 
      originalValue.name === "dummy" ? yup.string() : yup.email("Email or dummy")
    )
);

Но это не выглядит естественным образом, + я до сих пор не понимаю, как схема может генерировать циклическую c зависимость.

...