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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP