Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

191
Views
¿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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!