Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Por que não usar o setter diretamente?

Na aula, o instrutor definiu uma função no componente pai que chama o setter

aoAlterado={valor => setValue(valor)}
quando uma ocorre uma alteração, essa função é executada
const aoDigitado = (evento) => {
    props.aoAlterado(evento.target.value)
}

onChange={aoDigitado}
Minha dúvida é: por que não passar o setter diretamente, a partir do componente pai?
aoAlterado={setValue}
1 resposta
solução!

Oi, Christopher, tudo bem?

Isso pode parecer uma simplificação, mas há algumas razões para preferir encapsular o setter em uma função, especialmente em contextos mais complexos.

  • Abstração e Encapsulamento: Ao definir uma função intermediária, você pode adicionar lógica adicional antes de executar o setter. Por exemplo, você pode querer validar o valor ou logar a mudança antes de atualizar o estado. Isso mantém a lógica de manipulação de estado separada do componente filho, o que é uma boa prática em termos de design de software.

    const aoAlterado = valor => {
        console.log("Novo valor:", valor);
        setValue(valor);
    }
    
  • Reutilização: Se você precisar reutilizar a lógica de manipulação de estado em diferentes partes do seu componente ou em diferentes componentes, encapsular essa lógica em uma função torna seu código mais DRY (Don't Repeat Yourself).

  • Flexibilidade para Mudanças: Se, no futuro, a maneira como você lida com o estado precisar ser alterada, você só precisará alterar a implementação em um lugar. Se você passar o setter diretamente, cada instância precisará ser atualizada individualmente.

  • Desacoplamento: Usar uma função intermediária ajuda a desacoplar o componente filho do estado específico que ele está manipulando. Isso significa que o componente filho não precisa saber como o estado é gerenciado, apenas que ele precisa chamar uma função quando algo muda. Isso é especialmente útil em grandes bases de código, onde o gerenciamento de estado pode se tornar complexo.

Embora seja tecnicamente possível e às vezes mais direto passar o setter diretamente, as práticas mencionadas ajudam a manter seu código mais organizado e manutenível a longo prazo. É uma questão de equilibrar simplicidade e escalabilidade/manutenção do código.

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!