我是第一次使用 Nextjs。
我正在尝试创建多个布局,这些布局将包含在一个<Header><different-layouts-for-each><Footer>
结构上。
我面临的问题是 getStaticProps 或 getServerProps 只能在页面级别运行。
由于我需要在导航上进行 SEO,我想我应该使用上述两种方法之一在每个页面文件上获取它的道具。
这里的问题是我必须在每个页面上获取菜单道具,但是有不同的模板我必须在所有这些模板上重复自己,以便静态或预呈现内容并使 SEO 可读。
在组件上获取菜单道具<MainNav>
将是理想的情况。
我尝试在组件上执行 asnyc/await:
<Header>
零件
import Logo from "../components/header/logo";
import MainNav from "../components/header/mainnav.js";
function Header() {
return (
<div className="headwrapper container mx-auto py-8 flex items-center">
<Logo />
<MainNav/>
</div>
);
}
export default Header;
<MainNav>
零件
import Link from "next/link";
import { WpHeader } from "../../lib/wpapi";
import React, { useEffect, useState } from "react";
function MainNav() {
const [nav, setNav] = useState(0);
useEffect(() => {
const fetchData = async () => {
const wp = new WpHeader();
const call = await wp.getAxiosMenu();
console.log(call);
setNav(call);
};
fetchData();
}, []);
return (
<div className="navigation text-right w-3/4">
<ul className="main-navigation">
{nav
? nav.map(item => (
<li key={item.id} className="inline-block mx-2">
<Link href={item.path}>
<a>{item.label}</a>
</Link>
</li>
))
: "loading"}
</ul>
</div>
);
}
export default MainNav;
这里的问题是这将返回一个承诺,并且 html 将显示“正在加载”而不是实际的菜单 html。
有什么帮助或文章可以帮助我吗?
谢谢。