如何使用 Yup 验证没有重复

Mat*_*iro 7 forms reactjs yup

我有一个验证,仅通过检查其字段是否违反其唯一规则来验证其字段,但它允许在数组内进行重复。

我想要某种不允许其中有重复值的条件。

我的对象:

respostas: Yup.array()
    .of(
      Yup.object().shape({
        nome: Yup.string()
          .trim()
          .max(1000, Messages.RESPOSTA_ENQUETE_TAMANHO_MAXIMO)
          .required(Messages.CAMPO_OBRIGATORIO)
      })
    )
    .required(Messages.RESPOSTA_QUANTIDADE_MINIMA)
Run Code Online (Sandbox Code Playgroud)

例如,我会有一个像这样的数组: [aaa,bbb,aaa] 允许,但我不想要这种重复。

小智 8

要验证这一点,您可以编写自己的.test(). 您可以将以下测试添加到 Yup 对象。

.test("Unique", "Values need te be unique", values => {
    return (new Set(values)).size === values.length;
})
Run Code Online (Sandbox Code Playgroud)

错误将添加到一般对象,而不是特定字段。