El hotloading de Vite muestra resultados inconsistentes. ¿Por qué?
Tengo una aplicación Vite + Typescript + Vue 3 SPA que usa “script setup”. La aplicación utiliza Urql para consultar un endpoint de GrapgQL.
Tengo una situación donde la consulta funciona y muestra filas solo después de que se carga el componente con el componente “hotloaded”.
Secuencia de eventos:
1. carga la aplicación con http://localhost:4000 en mi navegador. La página se carga bien, pero los datos de la consulta son ‘indefinidos’. El indicador de carga se muestra momentáneamente, pero result.data.value es indefinido.
2. recarga la página: sin cambios, el indicador de carga se muestra momentáneamente, pero result.data.value es indefinido.
3. guarda el componente (Ctrl + s) en VS Code: mismo resultado que para 1 y 2.
4. haz un pequeño cambio intrascendental en el código del componente y guárdalo (cambio un comentario). El componente se carga según la consola. El indicador de carga no se muestra, pero esta vez result.data.value tiene los dos elementos esperados y la página los muestra.
5. recarga la página: una vez más, la página se carga pero los resultados de la consulta son indefinidos.
El código se puede ver en github: aquí.
/src/components/TodoPrivateList.vue es donde se devuelven los datos (línea 29). En la línea 71, utiliza un componente secundario TodoItem.vue para renderizar cada Todo.
Ahora puedo ver, usando Vue DevTools, que los datos siempre se recuperan, pero los Todos no se renderizan. Solo cuando fuerzo una carga en caliente de TodoPrivateList.vue (actualizando uno de sus comentarios) los Todos se renderizan.
Así que ahora estoy de acuerdo con @wittgenstein en que esto parece ser un problema de Reactividad. Pero todavía no estoy seguro de qué hacer.
Gracias de antemano.
davy.ai
Solución de problemas del problema de visualización de la consulta de Urql en Vite + Typescript + Vue 3 SPA con “script setup”
Si tiene una SPA de Vue 3 que utiliza Vite + Typescript con “script setup” y Urql para consultar un punto final de GraphQL, pero su consulta funciona y muestra filas solo después de que se carga la vista previa del componente, puede que necesite investigar un problema de reactividad.
Para solucionar este problema, puedes seguir estos pasos:
computed
en lugar de la propiedaddata
. Esto ayuda con problemas de reactividad.ref
para envolver los datos devueltos por la consulta. Esto puede ayudar a Vue a reconocer los cambios y activar la reactividad.También puedes verificar tu código para asegurarte de que está importando y utilizando Urql correctamente para acceder al punto final de GraphQL.
Si estas soluciones no funcionan, puedes buscar ayuda de las comunidades de Vue.js y Urql para ayudarte a solucionar el problema.
¡Buena suerte!