簡體   English   中英

無法讓 getStaticProps 在 Next.JS 中呈現 JSX

[英]Can't get getStaticProps to render JSX in Next.JS

我正在嘗試在 Next 中從本地托管的 Strapi API 渲染基本數據。

數據將成功登錄控制台,但我無法將 map 導入 JSX。

API 得到 function:

export async function requestQuery(query) {
  const res = await fetch(`${process.env.NEXT_PUBLIC_STRAPI_URL}/${query}`)
  if (res.status !== 200) return [];
  const data = await res.json();
  return data;
}

Index.js 文件生成 static 道具:

import { requestQuery } from '../lib/staticApi.js';
import Sidebar from '../components/Sidebar.js'

export default function Home({ categories }) {

  return (
    <>
      <Sidebar categories={categories} />
    </>
  )
}

export async function getStaticProps() {

  const categoriesArray = await requestQuery('categories');

  return {
    props: {
      categories: categoriesArray.data
    }
  }
}

從 index.js 成功傳遞道具的組件,但不會渲染到 HTML:

export default function Sidebar({ categories }) {

  console.group(categories) // successfully logs length 4 array;
  return (
    <ul>
      {/* Just mapping id's to try and get it to work - returns empty list */}
      {categories.map((id) => {
        <li>{id}</li>
      })}
    </ul>
  )
}

提前致謝。

你沒有返回任何東西。 檢查下面的修復。 您必須使用括號或從 map function 顯式返回某些內容。

  return (
    <ul>
      {/* Map through array */}
      {categories.map((id) => (
        <li>{id}</li>
      ))}
    </ul>
  )

或者

return (
    <ul>
      {/* Just mapping id's to try and get it to work - returns empty list */}
      {categories.map((id) => {
        // add a return here
        return (<li>{id}</li>);
      })}
    </ul>
  )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM