如何在 Next js 13 中使用动态头部?

问题描述 投票:0回答:1

在下一个 js 13 之前,我们曾经将动态头作为导入。但在 Next JS 13 中,他们引入了 head.js 类。这在使用静态页面时有效,但是在加载动态页面时我们如何更改头部的标题和描述?我直接导入next/head然后赋值但是并没有改变head

export default function DetailPage({ params: { itemid } }) {

const [datas, setDatas] = useState({});

  const getData = async () => {
    const docRef = doc(db, "items", itemid);
    const docSnap = await getDoc(docRef);
    setDatas(docSnap.data());
  };

  useEffect(() => {
    if (Object.keys(datas).length == 0) {
      getData();
    }
  }, [datas]);

return (

<>
<Head>
        <title>{datas.title}</title>
        <meta name="viewport" content="initial-scale=1.0, width=device-width" />
        <meta
          name="keywords"
          content="some contents"
        />
        <meta
          name="description"
          content={datas.desc}
        />
      </Head>

  <section>...</section>

</>

)

}
javascript reactjs next.js meta-tags vercel
1个回答
0
投票

我猜你正在使用

app
目录,
Head
组件已被
generateMetadata
API 取代。用法可以在你的页面中使用这样的东西:

import type { Metadata } from "next";

export function MyPage(): Promise<JSX.Element> {
  return <></>;
}

export async function generateMetadata(): Promise<Metadata> {
  const data = await getMyData();
  return {
    // return your metadata here
  };
}

您可以在官方文档中找到完整的 API 参考和静态元数据方法。

© www.soinside.com 2019 - 2024. All rights reserved.