Búsqueda de sitios web

typescript - NuxtJS - Usar el método asyncData en el layout o componente


¿Cómo puedo usar asyncData en un layout o componente (aparentemente prohibido)?

Porque mi componente de barra lateral se usa en el diseño predeterminado, y necesito usar asyncData para mostrar datos del backend. Y si uso Vuex para obtener datos... no sé cómo puedo obtener esto de manera global en cada página.

Mi anotación del componente de diseño:

  @Component({
    components: {
      LeftDrawer
    },
    async asyncData({ app }) {
      const latestPosts = await app.$axios.get(`/posts/latest`);

      return {
        latestPosts: latestPosts.data,
      };
    }
  })

Respuesta #1

fetch y asyncData funcionan solo para páginas, como se indica en la documentación. Si necesitas algo para obtener datos en cada página, usa nuxtServerInit

actions: {
  async nuxtServerInit({ dispatch }) {
    await dispatch('core/load')
  }
}

Respuesta #2

El nuevo fetch en Nuxt >= 2.12 ahora soporta la obtención en el nivel de layout y component.

En este momento está ligeramente roto para mí a nivel de layout en mi sitio generado estáticamente, así que uso fetchOnServer: false. Para cuando otras personas lean esto, con suerte estará arreglado, así que siéntete libre de eliminar esto.

Aquí hay algo de material de lectura útil :)

Documentos

Guía general

Guía para sitios estáticos

Artículos relacionados