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

177
Views
Acción de envío en la función de limpieza de useEffect

Tengo un componente de formulario en una interfaz de usuario de Material <Tab /> que permite a los usuarios actualizar la información de su dirección. La información se obtiene de la API a través redux-thunk y los campos del formulario se llenan con datos del servidor antes de que se produzca la actualización.

ingrese la descripción de la imagen aquí

El problema es que después de que el usuario complete los campos con nuevos datos y actualice su dirección, los campos del formulario aún muestran el estado anterior y no se actualizan hasta que el usuario vuelve a cargar la página.

Para solucionar el problema, implementé useEffect para enviar la acción de obtener datos de usuario siempre que el estado isUpdated sea verdadero (lo que sucederá después de que se complete la acción updateUserAddress ). Esto, por supuesto, introdujo otro problema que era el renderizado infinito.

Para corregir la llamada de envío infinito, envío una acción para borrar el estado de actualización y lo configuro en falso en la función de limpieza de useEffect . Esto ha resuelto el problema y cada vez que el usuario actualiza su dirección, la interfaz de usuario se actualiza y los nuevos valores completan los campos del formulario:

 // Refresh user after address update useEffect(() => { if (updateState) { dispatch(getUser(userInfo.user_id)); } // Clear update state return () => dispatch(clearUpdateState()); }, [dispatch, updateState, userInfo]);

El único problema es que se llama a la función de limpieza cada vez que el usuario cambia de un lado a otro desde la pestaña Edit Address .

Aunque este enfoque solucionó mi problema, era escéptico al respecto y quería saber si esta es la forma correcta de hacerlo.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El problema es que después de que el usuario complete los campos con nuevos datos y actualice su dirección, los campos del formulario aún muestran el estado anterior y no se actualizan hasta que el usuario vuelve a cargar la página.

Puede hacer una actualización optimista cuando se envía la acción de actualizar la dirección y simplemente escribir los datos de entrada en el estado, suponiendo que la actualización probablemente funcione. Esto debería llenar las entradas con los datos que el usuario acaba de ingresar, por lo que para ellos nada cambiará. La solicitud de actualización en sí debería devolver el conjunto de datos actualizado, por lo que puede guardarlo en redux. O si no es así, active una solicitud de obtención justo después de la actualización.

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