代码之家  ›  专栏  ›  技术社区  ›  Robin Klöckner

Nuxt 3:如何将useHead()与在useAsyncData()中提取的异步数据一起使用

  •  0
  • Robin Klöckner  · 技术社区  · 1 年前

    在我的组件中 <script setupt> 我正在从内部的CMS(Strapi v4)中获取数据 useAsyncData ,因为给定的路由是在服务器端预先呈现的。在第二步中,我想使用内部提取的数据 useHead() 但是标题未定义或者应用程序中断。

    <script setup>
    const { find } = useStrapi4();
    
    const { data } = await useAsyncData(
        "posts",
        () => find("posts"),
    );
    
    useHead({
        title: data.data[0].attributes.title,
    })
    </script> 
    

    有没有办法在不集成的情况下实现这一点 useHead() 在里面 useAsyncData() ?我错过了什么?

    0 回复  |  直到 1 年前
        1
  •  0
  •   Sayid    1 年前

    在加载变量后调用useHead()compositable。

    例如

    <script setup>
     const { find } = useStrapi4();
     
     const loadData = async () => {
        const { data } = await await useAsyncData('posts', () => find('posts'));
    
        useHead({
          title: data.data[0].attributes.title,
        });
      };
    
    loadData()
    
    </script> 
    
    

    希望它能有所帮助!

        2
  •  0
  •   Timi    1 年前

    如果您想在useAsyncData之外继续使用useHead(),请尝试data.value:

    <script setup>
      const { find } = useStrapi4();
      const { data } = await useAsyncData(
          "posts",
              () => find("posts"),
          );
        
      useHead({
          title: data.value.data[0].attributes.title,
      })
     </script> 
    

    希望能有所帮助。