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

209
Vistas
Agregar datos a la matriz usando UseState onChange

Tengo algunos problemas para averiguar cómo puedo obtener el estado de un campo de entrada y agregarlo a una matriz useState.

La forma en que se configura este código, usando onChange, agregará cada carácter que escriba en textField como una nueva parte de la matriz, pero no quiero establecer el valor hasta que el usuario termine de escribir.

¿Cuál sería una solución simple a esto?

Mi código:

 const [subject, setSubject] = useState([]);`
 <input type="text" placeholder={"Eks. 'some example'"} onChange={(e) => setSubject(oldArray => [...oldArray, e.target.value])}/>
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Bueno, todavía no estoy seguro de reaccionar, pero a menos que no quieras hacer alguna validación, ¿por qué no usas la combinación useRef hook y onBlur? El gancho UseRef básicamente establece una referencia en el elemento y luego puede usar el valor de esa referencia, que en su caso sería el valor de textField. OnBlur se activará cuando el usuario haga clic fuera de la entrada (la entrada pierde el foco) El código debería verse así:

 import react, {useRef, useState} from "react"; const someComponent = (props) => { const [subject, setSubject] = useState([]); const textAreaRef = useRef(); const onBlurHandler = () => { setSubject((prevSubject) => [...prevSubject, textAreaRef.current.value]); } return <input type="text" placeholder={"Eks. 'some example'"} ref={textAreaRef} onBlur={onBlurHandler}/> }

Otra forma sería usar el antirrebote con useEffet.

about 4 years ago · Juan Pablo Isaza Denunciar

0

esto es algo que preparé para ti... observa el cambio de la entrada, y 1 segundo después de que la persona deja de escribir, agregará el valor de entrada.

Las principales cosas a observar aquí son useEffect() y <input /> con el nuevo estado que hice [input, setInput] . o puedes jugar con esto aquí

 export default function App() { const [subjects,setSubjects] = useState([]); const [input,setInput] = useState("") useEffect(() => { const timer = setTimeout(() => { setSubjects(old => [...old, input]) }, 1000) return () => clearTimeout(timer) }, [input]) return ( <div className="App"> <h1>Hello CodeSandbox</h1> <input placeholder="type here" value={input} type="text" onChange={e => setInput(e.target.value)} /> {subjects.length === 0 ? <h3>Nothing yet...</h3> : <h3>{subjects}</h3> } </div> ); }
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