AnswerBun.com

Yup mixed não funciona notRequired ou nullable

Stack Overflow em Português Asked by Braga Us on January 2, 2022

Boa tarde, estou validando os dados de um formulário com Yup e preciso que apenas imagens possam ser carregadas, então usei o seguinte código:

// formato que pode ser upado no input de email
const formatosSuportados = [
    "image/jpg",
    "image/jpeg",
    "image/gif",
    "image/png"
];    

// Validação das entradas
const EsquemaDeValidacao = Yup.object().shape({
    email: Yup.string().email().required('enter email'),
    corpo: Yup.string().max(500, "Too Long!").required('enter any message'),
    arquivo: Yup.mixed().nullable().test('fileFormat', 'Unsupported Format', arquivo => 
        arquivo && formatosSuportados.includes(arquivo.type)
    )
})  

O problema é que o arquivo está sendo obrigatório para eu conseguir enviar o email. Não dispara erro algum, apenas não envia se não tem nenhum arquivo upado.

Eu já tentei com nullable e notRequired, existe alguma outra forma de fazer isso?

One Answer

Essa expressão sempre vai dar falso se não contiver nenhum arquivo selecionado, então, acredito uma lógica bem básica seria testar se o arquivo não existe, retorna true, se ele existir retornar o outro teste, exemplo:

arquivo => { 
    if (!arquivo) { 
        return true;
    }
    return formatosSuportados.includes(arquivo.type) 
} 

isso vai solucionar o seu problema.

Answered by novic on January 2, 2022

Add your own answers!

Related Questions

Qual a diferença entre split(” “) e split()

1  Asked on November 27, 2020 by shinforinpola

 

PHP não recebe POST Json

2  Asked on November 27, 2020 by weverton

     

Como converter latitude/longitude para Double em C#

1  Asked on November 26, 2020 by joaquim-caetano-teixeira

       

Como criar um “Area” no MVC no .net core 3.1?

2  Asked on November 23, 2020 by ester-ribeiro

   

Como bloquear datas retroativas no input datetime?

1  Asked on November 23, 2020 by grupo-astron

     

Problemas ao realizar restore de PostgreSQL

0  Asked on November 21, 2020 by renato-silva

       

“break” não termina a execução como deveria

3  Asked on November 21, 2020 by silvano-junior

       

Input em Bootstrap 4 não ocupa a largura toda

2  Asked on November 19, 2020 by guilherme-silva

   

Como tornar um repositório privado em público no GitLab?

1  Asked on November 8, 2020 by gabriel-fernandes

   

Baixar .txt para memória e ler

1  Asked on November 6, 2020 by jonathan-ribeiro

 

Criação de imagems com texto ‘imagecreate()’

1  Asked on November 3, 2020 by leandro-ferreira

       

Algoritmo de Portugol SE

0  Asked on October 29, 2020 by smilecraby_gamer

   

como melhorar o tempo no reconhecimento de voz em python 3?

1  Asked on October 27, 2020 by ruan-ferreira

 

Ask a Question

Get help from others!

© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP, SolveDir