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'?