En mi aplicación Vue tengo algunos componentes secundarios que funcionaron anteriormente, es decir. sus respectivos datos cargados bien dentro del componente principal.
Inicialmente logré esto agregando una clave a mi componente secundario, una solución que encontré en línea como la forma recomendada de actualizar dinámicamente los datos de los componentes secundarios. La idea es que un componente se actualice automáticamente cada vez que cambie la clave.
<upcoming-events :key="rerenderWidgets"/>
Estoy incrementando el valor de rerenderWidgets así. Los datos secundarios deberían estar listos después de que finalicen las Promesas. El siguiente código se ejecuta en el enlace del ciclo de vida del method() después de verificar si es la primera carga de la página.
const promisesArray = [this.loadPrivate(),this.loadPublic()] await Promise.all(promisesArray).then(async() => { await this.getCurrentParticipants().then(async(results) => { this.currentParticipants = results this.rerenderWidgets += 1 }) }) Esto funcionó durante un tiempo, pero los componentes secundarios ya no cargan sus datos en el elemento principal hasta después de la segunda visita a la página. Los renderWidgets se incrementan, pero de alguna manera los datos ahora no se actualizan. No creo que haya cambiado nada que pudiera haberlo roto, pero obviamente algo lo ha hecho.
El componente secundario en sí tiene funciones que obtienen datos de un módulo cuyos datos deberían estar listos una vez que se hayan realizado las Promesas anteriores, por lo que no estoy seguro de por qué ya no funciona.
También intenté usar el siguiente código en el gancho updated() que, como se supone, debe ejecutarse después de que la página se haya renderizado por completo. Pensé que todos los datos deberían estar listos cuando se llame a esta función. Pero no funciona y parece invocar un bucle que muestra la alerta repetidamente.
updated() { this.$nextTick(function () { alert('rerender....') this.rerenderWidgets += 1 })Si alguien me puede decir que puede estar fallando y como puedo solucionarlo, agradecería mucho la ayuda. ¡Gracias por adelantado!