1
resposta

Validação Form

No código:

this.stateInicial = {
            nome: '',
            livro: '',
            preco: '',
            validacao: this.validador.valido()
        }

Qual é o valor passado para 'validacao' aqui?

No código:

valido() {
        const validacao = {};

        this.validacoes.map(regra => (
            validacao[regra.campo] = { isInvalid: false, message: '' }
        ));

        return { isValid: true, ...validacao };

    }

O método acima é chamado para inicializar a variável validação. Qual é a função da variável 'validacao'? Qual seria o valor inicial dela, no 'stateInicial'?

Qual a função do método 'valido'?

O código acima parece estar setando uma propriedade 'campo' para cada regra com o valor {isInvalid:false, message:''}

Seria a inicialização da propriedade 'validacao' no 'stateInicial'?

O valor inicial de propriedade 'validacao' no 'stateInicial', seria isso abaixo?

{isValid: true, 'nome':{isInvalid:false, message:''}, 'livro':{isInvalid:false, message:''}, preco:{isInvalid:false, message:''}}

...

No código:

valida(state) {

        let validacao = this.valido();

        this.validacoes.forEach(regra => {


            if (!validacao[regra.campo].isInvalid) {
                const campoValor = state[regra.campo.toString()];
                const args = regra.args || [];
                const metodoValidacao = typeof regra.metodo === 'string' ?
                    validador[regra.metodo] : regra.metodo;

                if (metodoValidacao(campoValor, ...args, state) !== regra.validoQuando) {
                    validacao[regra.campo] = { 
                        isInvalid: true, 
                        message: regra.mensagem 
                    };
                    validacao.isValid = false;

                }
            }


        });
        return validacao;
    }

Nessa parte:

 if (metodoValidacao(campoValor, ...args, state) !== regra.validoQuando) {
                    validacao[regra.campo] = { 
                        isInvalid: true, 
                        message: regra.mensagem 
                    };
                    validacao.isValid = false;

                }


Qual é a função do método 'metodoValidacao' acima, como ele opera? Por que ele precisa dos argumentos 'campoValor' e do 'state'?

1 resposta

Fala ai Marcelo, tudo bem? Vamos lá:

Qual é o valor passado para 'validacao' aqui?

Será passado o valor da classe que você criou e atribuiu para this.validador.

O método acima é chamado para inicializar a variável validação. Qual é a função da variável 'validacao'? Qual seria o valor inicial dela, no 'stateInicial'?

A validacao será responsável por mostrar as mensagens de erros para os campos.

O valor inicial de propriedade 'validacao' no 'stateInicial', seria isso abaixo?

Sim

Qual é a função do método 'metodoValidacao' acima, como ele opera? Por que ele precisa dos argumentos 'campoValor' e do 'state'?

Ele vai validar o campo.

Espero ter ajudado