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 January 2, 2022 by marcos-paulo-s-rezende
2 Asked on January 2, 2022
1 Asked on January 2, 2022 by felipe-machado
4 Asked on January 2, 2022
argumento estilo de codificacao funcoes independente de linguagem parametros
3 Asked on January 2, 2022 by eduardo-mior
1 Asked on January 2, 2022 by vitor-cordeiro
2 Asked on January 2, 2022 by bilbo
1 Asked on January 2, 2022
1 Asked on January 2, 2022 by braga-us
1 Asked on January 2, 2022 by gustavo-benevenuto
1 Asked on January 2, 2022 by felipe-mascarenhas
1 Asked on January 2, 2022 by joseph-isaac
2 Asked on December 30, 2021 by juliano-arajo
1 Asked on December 30, 2021 by denilson-carlos
3 Asked on December 30, 2021
Get help from others!
Recent Answers
Recent Questions
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP