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

249
Visualizações
¿Cómo evitar que useState y useLocation se vuelvan a representar en el campo de entrada/texto en reaccionar js?

Entonces, básicamente, mi problema es que tengo dos páginas/pantallas (Principal y Editar). En la página Main , cuando hago clic en un elemento, lo pasa a la página Edit usando ganchos useHistory del paquete react-router-dom . En la página Edit , obtengo el elemento usando ganchos useLocation y los paso al campo de entrada para mi useState inicial, pero cada vez que edito/escribo un carácter en text field no estoy seguro de si se llama re render o cualquier otra cosa, pero se pasará useLocation en consola Aquí está mi código:

Editar página/pantalla

 import axios from "axios"; import React, { useState } from "react"; import { useLocation } from "react-router"; export const EditScreen = () => { const location = useLocation().state; console.log(location); const [title, setTitle] = useState(location.b_title); const [content, setContent] = useState(location.b_content); const [category, setCategory] = useState(location.category_id); const submitHandler = (e) => { e.preventDefault(); axios .put(`http://localhost:3001/api/v1/blog/${location.id}`, { blog_title: title, blog_content: content, category_id: category, }) .then(alert("success edit blog")) .catch((err) => alert(err)); setTitle(""); setContent(""); setCategory(""); }; return ( <div> <h1>edit blog page</h1> <form onSubmit={submitHandler}> <input type="text" placeholder="title" value={title} onChange={(e) => setTitle(e.target.value)} /> <br /> <br /> <input type="text" placeholder="content" value={content} onChange={(e) => setContent(e.target.value)} /> <br /> <br /> <input type="text" placeholder="category" value={category} onChange={(e) => setCategory(e.target.value)} /> <br /> <br /> <input type="submit" value="submit" disabled={ title === "" || content === "" || category === "" ? true : false } /> </form> </div> ); };

Captura de pantalla de la consola

ingrese la descripción de la imagen aquí

Puedes ver arriba ss en círculo rojo, ese es el problema.

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

0

Hermano, no podemos evitar que setState vuelva a renderizar el componente, ya que es la reacción predeterminada especificada anteriormente. Por lo tanto, debe usar la técnica de eliminación de rebotes para evitar que se produzcan múltiples renderizaciones. Haz eso. Se menciona con ejemplos claramente en el artículo. También puede cambiar el evento a onBlur en lugar de onChange, reducimos la cantidad de setStates para que no se llamen y reducimos la representación.

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