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?
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
1 Asked on November 26, 2020 by joaquim-caetano-teixeira
0 Asked on November 26, 2020 by leo
0 Asked on November 25, 2020 by julio
2 Asked on November 23, 2020 by ester-ribeiro
1 Asked on November 23, 2020 by grupo-astron
0 Asked on November 21, 2020 by renato-silva
3 Asked on November 21, 2020 by silvano-junior
2 Asked on November 19, 2020 by guilherme-silva
0 Asked on November 16, 2020 by dirso
1 Asked on November 15, 2020 by andrews-gomes
2 Asked on November 9, 2020 by omathevs
1 Asked on November 8, 2020 by gabriel-fernandes
1 Asked on November 3, 2020 by leandro-ferreira
1 Asked on November 3, 2020 by itamar
2 Asked on October 31, 2020 by cyberlacs
1 Asked on October 27, 2020 by ruan-ferreira
Get help from others!
Recent Answers
Recent Questions
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP, SolveDir