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

152
Visualizações
¿El gancho useState está relacionado con el izado?

Soy bastante nuevo en React.js/javascript y estoy trabajando en un nuevo proyecto, me gustaría poder actualizar manualmente mi componente (debido a algunas limitaciones de la biblioteca de terceros) cuando sea necesario.

Después de buscar, modifiqué un patrón del sitio oficial que parece satisfacer mis necesidades utilizando el enlace useState (aunque no se recomienda). A continuación se muestra un componente extremadamente simplificado para la prueba, se necesita useRef en mi escenario.

Lo que me pregunto es por qué la función de actualización se puede llamar correctamente en useRef, ¿tiene esto algo que ver con la elevación, o es más una reacción, como la secuencia de ejecución de los ganchos que se modifican bajo el capó?

https://codesandbox.io/s/useref-usestate-test-0x0hhb?file=/src/App.js

 import {useEffect, useRef, useState} from 'react' export default function App() { const testRef = useRef(()=>{ console.log('testRef called'); update({}); }) const [, update]= useState({}); useEffect(()=>{ console.log('updated'); }); return ( <div className="App"> <h1>Hello CodeSandbox</h1> <h2> <button onClick={()=>testRef.current()}> Test </button> </h2> </div> ); }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No se trata de levantar o React haciendo algo debajo del capó: update es un nombre en el ámbito que cierra useRef . (También podría ser un nombre en otro ámbito, o podría no estar definido. No importa). De hecho, como muestra el siguiente ejemplo, esto es solo JavaScript y nada específico de React.

Solo habría un problema si llamara a testRef.current() antes de la línea const [, update] = ... (ya que g está en la zona muerta temporal ):

 function x() { const f = () => { g(); }; f(); const g = () => console.log("ok"); } x();

lanza

 VM471:3 Uncaught ReferenceError: Cannot access 'g' before initialization at f (<anonymous>:3:9) at x (<anonymous>:5:5) at <anonymous>:9:1

pero

 function x() { const f = () => { g(); }; const g = () => console.log("ok"); f(); } x();

solo imprime

 ok

como era de esperar.

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