Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

148
Vistas
El evento React onChange dispara una cadena vacía en la primera entrada

Problema: no hay salida de cadena la primera vez que escribo texto. Esto está causando que el último carácter de lo que ingrese en la salida no aparezca. ¿Por qué es esto?

Algún estado - Centrándose en la propiedad del name

 const [options, setOptions] = useState({ name: '', signOff: '' });

Aporte

 <input type="text" placeholder="Enter first name" name="name" id="name" onChange={(e) => handleNameChange(e.target.value)} />

Función para disparar después del cambio de entrada

 const handleNameChange = (name: string) => { setOptions({ ...options, name }); console.log(options); };

Ejemplo de salida de la consola después de escribir "hola" - ¿Por qué la cadena vacía para la propiedad de name ?

 {name: '', signOff: ''} options.tsx:17 {name: 'h', signOff: ''} options.tsx:17 {name: 'he', signOff: ''} options.tsx:17 {name: 'hel', signOff: ''} options.tsx:17 {name: 'hell', signOff: ''} options.tsx:17
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Su comportamiento esperado, porque setStates son asincrónicos, por lo que cuando registra la variable de estado inmediatamente después de configurarla, registra el valor anterior, no el actualizado
Si solo desea registrar los cambios de estado, mueva console.log() a useEffect hook

 const handleNameChange = (name: string) => { setOptions({ ...options, name }); console.log(options); };
 useEffect(() => { console.log(options); }, [options]);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede agregar la variable de opciones como el segundo parámetro para usarEffect. Esto significa que en cada cambio de estado de esta variable se disparará esta función.

 useEffect(() => { console.log(options); }, [options]);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Así es como lo hago y no he encontrado ningún problema de este tipo. También puede usar la misma función para cualquier otra entrada, no solo para el nombre.

 <input type="text" placeholder="Enter first name" name="name" id="name" onChange={handleChange} /> const handleChange = (e) => { setOptions({ ...options, [e.target.name]: e.target.value }); };
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda