3
respostas

[Dúvida] onChange ou onBlur

Durante a aula foi usado o "onChange", mas qual o motivo? pois não seria melhor utilizar o "onBlur", pois ai ele só pega o valor do input quando perder o foco do campo.

import './CampoTexto.css'

let valor = ''

const aoDigitado = (event) =>{
    valor = event.target.value
    console.log(valor)
}

export const CampoTexto = (props) => {
    return (
        <div className='campo-texto'>
            <label>
                {props.label}
            </label>
            <input onBlur={aoDigitado} required={props.obrigatorio} placeholder={props.placeholder} />
        </div>
    )
}
3 respostas

Olá Gabriel,

Vamos mergulhar mais fundo um pouco em conceitos fundamentais do Reac:

Em React, quando se trata de inputs controlados , é comum utilizar o evento onChange em vez do evento onBlur. Isso ocorre porque há diferenças fundamentais entre esses eventos e a forma como os inputs controlados funcionam em React.

Um input controlado em React é aquele em que o valor do input é controlado pelo estado do componente. Isso significa que o valor do input é armazenado em uma variável de estado do componente e é atualizado através de uma função manipuladora. Essa função manipuladora é chamada sempre que ocorre um evento no input.

O evento onChange é acionado sempre que o valor do input é alterado, independentemente de o usuário ter concluído a edição do campo ou não. Isso permite que a aplicação reaja imediatamente a cada alteração do valor do input, atualizando o estado do componente e refletindo as alterações na interface do usuário.

Por outro lado, o evento onBlur é acionado quando o input perde o foco, ou seja, quando o usuário termina de editar o campo e clica em outra parte da página ou pressiona a tecla "Tab" para navegar para o próximo campo. Esse evento é útil para validar os dados do campo após a edição ou realizar ações específicas quando o usuário finaliza a interação.

No caso de inputs controlados, é mais comum utilizar o evento onChange porque ele permite que a aplicação responda em tempo real às alterações do usuário, mantendo o estado atualizado. Isso é especialmente útil em situações em que é necessário realizar validações ou reagir a cada alteração do input, como exibir mensagens de erro instantaneamente ou filtrar e exibir dados relacionados.

Ambos os eventos onChange e onBlur são úteis em diferentes contextos, dependendo do comportamento esperado do usuário e do objetivo da aplicação.

O evento onChange é disparado sempre que o valor do campo de entrada é alterado. Isso pode incluir não apenas quando o usuário insere texto, mas também quando ele exclui ou modifica o texto existente. Isso significa que o evento onChange é útil em situações em que é importante atualizar o estado da aplicação em tempo real, à medida que o usuário interage com o campo de entrada.

Por outro lado, o evento onBlur é disparado quando o campo de entrada perde o foco, o que significa que o usuário saiu dele. Isso pode ser útil em situações em que é importante validar o valor do campo de entrada ou executar alguma ação específica após o usuário ter inserido o valor completo.

No código fornecido, o evento onBlur é usado para atualizar a variável valor com o valor atual do campo de entrada. Isso significa que o valor só será atualizado quando o usuário sair do campo de entrada. Se a intenção for atualizar o valor em tempo real enquanto o usuário digita, o evento onChange pode ser mais apropriado. Mas se a intenção for obter o valor do campo de entrada apenas quando o usuário terminar de preenchê-lo, o evento onBlur pode ser uma escolha melhor.

Espero ter ajudado !! Eu tinha esta dúvida também !

Nuss o Prof estava escrevendo junto comigo, ignora a minha, vai na dele !