【问题标题】:NextJS and Strapi : fetch multiple API pages using one getStaticPaths() functionNextJS 和 Strapi:使用一个 getStaticPaths() 函数获取多个 API 页面
【发布时间】:2021-08-11 05:36:06
【问题描述】:

NextJs 和 Strapi 都解释了如何通过这样做从 Strapi 内部的单一集合类型中提取数据:

const pages = await (await fetch(getStrapiURL("/pages"))).json();
 const paths = pages.map((page) => {
    // Decompose the slug that was saved in Strapi
    const slugArray = page.slug.split("__");
    return {
      params: { slug: slugArray },
    };
  });
  return { paths, fallback: true };

}

现在我的目标是从多个集合类型/页面中提取数据: 这是我当前用来执行此操作的代码:

export async function getStaticPaths() {
  const [ pages, blogs ] = await Promise.all([
    fetchAPI("/pages"),
    fetchAPI("/blogs"),
  ]);
}

如您所见,我使用了一个 Promise 函数来同时获取多个。
如何在地图函数中将这两个页面映射在一起

【问题讨论】:

    标签: javascript reactjs next.js strapi


    【解决方案1】:

    修改: 我这样使用很复杂:

    export async function getStaticPaths() {
      const [pages, blogs] = await Promise.all([
        fetchAPI("/pages"),
        fetchAPI("/blogs"),
      ]);
      const all = {pages, blogs}
      const paths = Object.keys(all).map(a => ({params: all[a]}))
      return {
        paths,
        fallback: true
      }
    }
    

    虽然你可以像这样简单地使用:

    export async function getStaticPaths() {
      const all = await Promise.all([
        fetchAPI("/pages"),
        fetchAPI("/blogs"),
      ]);
      const paths = all.map(a => ({params: a}))
      return {
        paths,
        fallback: true
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-20
      • 2022-11-02
      • 2022-12-05
      • 1970-01-01
      • 2020-08-17
      • 2021-04-23
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多