Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

124
Visualizações
Reaccionar problema de valor de campo de entrada
const [inputValue,setInputValue] = useState("") handleChange = (e)=>{ setInputValue(e.target.value) console.log(e.target.value,inputValue) }

esta es una función simple de etiqueta de entrada onChange , pero lo que está aquí dentro de la función handleChange cuando estoy registrando los valores e.target.value es lo que estoy escribiendo en el campo e inputValue, que es el estado en el que estoy configurado, en realidad está vacío, así que si escribo, digamos 'd' en el campo de entrada, el valor del estado está realmente vacío y la próxima vez que escriba algo ahora tiene el valor 'd' que he escrito anteriormente... por favor, ayúdenme a resolver esto

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Sí. El cambio de estado es una operación asíncrona. console.log se ejecutó inmediatamente. Eso significa que console.log imprime el valor de entrada antes de la actualización del estado. Es por eso que si hacer el segundo está mostrando el valor anterior.

Mejor puedes detectar el cambio de estado usando useEffect

 useEffect(()=>{ console.log(inputValue) },[inputValue])
about 4 years ago · Juan Pablo Isaza Relatório

0

"Lo que pasa es que quiero hacer una barra de búsqueda y por eso cuando escribo, digamos "a" o algo así, la búsqueda no funciona porque el valor del estado está vacío en ese momento".

El estado de configuración es un proceso asíncrono. Cuando intenta registrar el estado inmediatamente después de configurarlo, todo lo que está haciendo es registrar el estado existente antes de que el componente se haya vuelto a renderizar.

@prasanth tiene razón con su respuesta de que agregar un useEffect para observar cambios en el estado de entrada es la única forma de registrar ese nuevo estado.

Si está tratando de escribir una barra de búsqueda, aquí hay una solución artificial rápida que filtra los nombres de animales de una matriz.

 const { useState } = React; function Example({ data }) { // Initialise the input state const [ input, setInput ] = useState(''); // When the input value changes // update the state function handleChange(e) { setInput(e.target.value); } // `filter` the data using the input state, // and then `map` over that array to return // an array of JSX function getFiltered(input) { return data .filter(el => el.toLowerCase().includes(input)) .map(el => <p>{el}</p>); } return ( <div> <input type="text" placeholder="Find an animal" onChange={handleChange} value={input} /> <div>{getFiltered(input)}</div> </div> ); } const data=["Alpine Goat","Beaver","Carolina Parakeet","Dragonfish","Eurasian Wolf","Frilled Lizard","Gila Monster","Honduran White Bat","Immortal Jellyfish","Japanese Macaque","Kooikerhondje","Leopard Gecko","Megalodon","Nova Scotia Duck Tolling Retriever","Orb Weaver","Pink Fairy Armadillo","Rhombic Egg-Eater Snake","Satanic leaf-tailed gecko","Tibetan Fox","Umbrellabird","Vervet Monkey","Whoodle","Xoloitzcuintli","Yeti Crab","Zonkey"]; ReactDOM.render( <Example data={data} />, document.getElementById('react') );
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js"></script> <div id="react"></div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda