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

416
Views
React.useState no recarga el estado de los accesorios

Espero que el estado se vuelva a cargar en el cambio de accesorios, pero esto no funciona y la variable del user no se actualiza en la próxima llamada de useState , ¿qué sucede?

 function Avatar(props) { const [user, setUser] = React.useState({...props.user}); return user.avatar ? (<img src={user.avatar}/>) : (<p>Loading...</p>); }

códec

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

El argumento pasado a useState es el estado inicial muy parecido a establecer el estado en el constructor para un componente de clase y no se usa para actualizar el estado al volver a renderizar

Si desea actualizar el estado en el cambio de prop, utilice useEffect hook

 function Avatar(props) { const [user, setUser] = React.useState({...props.user}); React.useEffect(() => { setUser(props.user); }, [props.user]) return user.avatar ? (<img src={user.avatar}/>) : (<p>Loading...</p>); }

demostración de trabajo

over 4 years ago · Santiago Trujillo Report

0

Componentes funcionales donde usamos useState para establecer valores iniciales a nuestra variable, si pasamos el valor inicial a través de accesorios, siempre establecerá el mismo valor inicial hasta que no haga uso del gancho useEffect ,

por ejemplo, su caso, esto hará su trabajo

 React.useEffect(() => { setUser(props.user); }, [props.user])

La función pasada a useEffect se ejecutará después de que el procesamiento se confirme en la pantalla.

De forma predeterminada, los efectos se ejecutan después de cada procesamiento completo, pero puede optar por activarlos solo cuando ciertos valores han cambiado.

 React.useEffect(FunctionYouWantToRunAfterEveryRender)

si pasa solo un argumento a useEffect, ejecutará este método después de cada renderizado, puede decidir cuándo activar esta FunctionYouWantToRunAfterEveryRender pasando el segundo argumento a useEffect

 React.useEffect(FunctionYouWantToRunAfterEveryRender, [props.user])

como nota que estoy pasando [props.user] ahora, useEffect solo activará esta función FunctionYouWantToRunAfterEveryRender cuando props.user cambie

espero que esto ayude a su comprensión avíseme si se requieren mejoras gracias

over 4 years ago · Santiago Trujillo Report

0

puede crear sus propios ganchos simples personalizados para esto. Los ganchos cambiaron el valor predeterminado cuando cambió.

https://gist.github.com/mahmut-gundogdu/193ad830be31807ee4e232a05aeec1d8

 import {useEffect, useState} from 'react'; export function useStateWithDep(defaultValue: any) { const [value, setValue] = useState(defaultValue); useEffect(() => { setValue(defaultValue); }, [defaultValue]); return [value, setValue]; }

#Ejemplo

 const [user, setUser] = useStateWithDep(props.user);
over 4 years ago · Santiago Trujillo Report
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!