Bom dia pessoal,
estou com o mesmo problema relatado pelo Cristiano em https://cursos.alura.com.br/forum/topico-typeerror-this-validacoes-map-is-not-a-function-111680.
Apesar dele ter solucionado o problema comentando apenas as chamadas do componente PopUp presentes no Formulario.js eu continuo com o problema mesmo não usando este componente. Verifiquei o meu código com o apresentado nas aulas até aqui e não consegui compreender o que está acontecendo.
Segue abaixo o meu FormValidator.js ...
import validador from 'validator';
class FormValidator {
constructor(validacoes) {
this.validacoes = validacoes;
}
valido() {
const validacao = { };
// populando o objeto de acordo com a quantidade de campos
// criando a chave isInvalid e atribuindo false para cada
// **TODOS OS CAMPOS COMEÇAM VÁLIDOS!**
this.validacoes.map(regra => (
validacao[regra.campo] = { isInvalid: false, message: '' }
));
//retorna um grande objeto com uma chave externa isValid
//junto com todos os outros campos.
return { isValid: true, ...validacao };
}
valida(state) {
let validacao = this.valido();
this.validacoes.forEach(regra => {
const campoValor = state[regra.campo.toString()];
const args = regra.args || [];
const metodoValidacao = typeof regra.metodo === 'string' ?
validador[regra.metodoValidacao] : regra.metodo;
/* Segundo parâmetro é uma lista opcional de argumentos possíveis de
configuração dos métodos de validação */
if (metodoValidacao(campoValor, ...args, state) !== regra.validoQuando) {
validacao[regra.campo] = {
isInvalid: true,
message: regra.message
}
validacao.isValid = false;
}
});
return validacao;
}
}
export default FormValidator;