对一个字段进行多次验证 是的

Mat*_*iro 7 reactjs yup

我正在使用 YUP 作为验证器来验证字段,但我已经在其中进行了测试,并且在添加另一个验证时遇到了麻烦。

我验证这一点:

nome: Yup.string()
            .required(Mensagens.CAMPO_OBRIGATORIO)
            .test('teste-nome-igual',Mensagens.NOME_NAO_DEVE_SER_IGUAL,function(value){
                let check = []
                if(contatos.length > 0)
                    check = contatos.map((contato)=> contato.nome.toUpperCase() === value.toUpperCase()) 
                return !check.includes(true)
            }),
Run Code Online (Sandbox Code Playgroud)

但我还想验证该字段是否nome不包含任何非 ASCII 字符,如果是,则显示一条消息,它不能包含非字母的内容。

Muh*_*Ali 14

您可以在返回模式test时多次链接。test喜欢:

Yup.string()
   .required(Mensagens.CAMPO_OBRIGATORIO)
   .test('teste-nome-igual',
         Mensagens.NOME_NAO_DEVE_SER_IGUAL,
         function(value){
           let check = []
           if(contatos.length > 0)
             check = contatos.map((contato)=> contato.nome.toUpperCase() === value.toUpperCase()) 
           return !check.includes(true)
         }
   )
   .test('test ascii',
         "Nome shouldn't contain non-ascii chars",
         (value) => {
         // test for ascii chars here and return true or false.
        }
   )
Run Code Online (Sandbox Code Playgroud)