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

195
Visualizações
¿Reaccionar useEffect + useState parece inicializar los componentes antes de definir la variable de estado?

Estoy tratando de adjuntar un token JWT de AWS Cognito a las solicitudes de Uppy en mi componente de carga. Para obtener el token, creo que necesito una función asíncrona:

 async function getSessionToken() { const data = (await Auth.currentSession()).getAccessToken().getJwtToken() console.log(data) return data; }

Sin embargo, necesito el valor de getSessionToken (es decir, el token real) antes de inicializar mi componente Uppy. Para hacer esto, pensé que sería mejor usar useEffect , por lo que podría establecer el estado de una variable usando useState y renderizar el componente Uppy después de que getSessionToken devolviera un valor:

 const [tokenData, setTokenData] = useState(); useEffect(() => { console.log(tokenData) getSessionToken().then((token) => { setTokenData(token) }) }, []); return ( <> {tokenData === 'undefined' ? <Skeleton variant="rectangular" width={210} height={118} /> : <UppyComponent data={tokenData} />} </> )

donde UppyComponent es:

 function UppyComponent(props) { console.log(props.data) const uppy = useUppy(() => { return new Uppy({ debug: true, autoProceed: false, restrictions: { maxNumberOfFiles: 1, minNumberOfFiles: 1, allowedFileTypes: ['video/*'], requiredMetaFields: ['caption'], } }) .use(AwsS3Multipart, { limit: 4, companionUrl: 'http://localhost:3020/', companionHeaders: { 'Authorization': "Bearer " + props.data, 'uppy-auth-token': "Bearer " + props.data, } }) .use(GoldenRetriever) .on('complete', result => { console.log('successful files:', result.successful) console.log('failed files:', result.failed) }) }) return <Dashboard uppy={uppy} plugins={['DropTarget']} inline={true} target='.DashboardContainer' showProgressDetails={true} note='Video only, up to 1 MB' width='400' metaFields={[ { id: 'name', name: 'Name', placeholder: 'Give your work a title. ' }, { id: 'caption', name: 'Caption', placeholder: 'describe what the image is about' } ]} browserBackButtonClose={false} /> }

Sin embargo, noté que UppyComponent todavía se está inicializando/renderizando antes de que regrese getSessionToken . Mirando las solicitudes, veo que props.data aún no está definido en UppyComponent . Pensé que, dado que useEffect no establecería la variable de estado hasta después de getSessionToken regresara, props.data no se establecería hasta que getSessionToken también lo hiciera. ¿No es este el caso?

¿Y hay una solución?

about 4 years ago · Juan Pablo Isaza
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