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

312
Visualizações
Reaccionar: accesorios obsoletos en el componente secundario

Aquí está el enlace CodeSandBox: https://codesandbox.io/s/stale-prop-one-g92sv?file=/src/App.js

Encuentro que los componentes secundarios no mostrarán los valores de contador correctos después de hacer clic en dos botones, aunque el contador en realidad se está incrementando:

 import "./styles.css"; import { useState } from "react"; const MyComponent = ({ value }) => { const [counter] = useState(value); return <span>{counter}</span>; }; export default function App() { const [counter, setCounter] = useState(0); const isVisible = counter !== 1; console.log(counter); return ( <div className="App"> <div> <button onClick={() => setCounter((counter) => counter + 1)}> Click me </button> </div> {isVisible && ( <div> Message 1 is: <MyComponent value={counter} /> </div> )} <div style={isVisible ? { display: "block" } : { display: "none" }}> Message 2 is: <MyComponent value={counter} /> </div> </div> ); }

Intento forzar la representación del componente secundario asignando un contador a su clave:

 export default function App() { const [counter, setCounter] = useState(0); const isVisible = counter !== 1; console.log(counter); return ( <div className="App"> <div> <button onClick={() => setCounter((counter) => counter + 1)}> Click me </button> </div> {isVisible && ( <div> Message 1 is: <MyComponent key = {counter} value={counter} /> </div> )} <div style={isVisible ? { display: "block" } : { display: "none" }}> Message 2 is: <MyComponent key = {counter} value={counter} /> </div> </div> ); }

Funciona, pero sigo sin saber por qué no funciona el anterior, ya que ha cambiado el props.value en MyComponent ... Gracias de antemano.

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

0

Con este:

 const MyComponent = ({ value }) => { const [counter] = useState(value); return <span>{counter}</span>; };

Le está diciendo a React que establezca el estado inicial en el primer accesorio de value pasado al componente, en el montaje.

Cuando el componente se vuelve a renderizar, el componente ya se ha montado, por lo que se ignora el valor pasado a useState ; en su lugar, el counter en ese elemento secundario se toma del estado de MyComponent , que es igual al estado inicial en MyComponent , el valor inicial apoyo de value aprobado.

Para lo que está tratando de hacer, solo tiene un valor único en toda la aplicación aquí que desea usar en todas partes, por lo que solo debe tener una llamada useState , en el padre, y luego representar el contador en el hijo desde el prop , que cambiará con el estado padre.

 const MyComponent = ({ value }) => { return <span>{value}</span>; };
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