【发布时间】:2021-09-07 23:12:00
【问题描述】:
我从 API 获取动态标题和日志,并将其传递给 og:title 和 og:image 的 nextJS Head。但它不工作。知道如何使它工作。
这是我的代码。
function PageHead(props: any) {
let location = "/";
if (process.browser) {
location = window.location.href;
}
console.log(props);
return (
<Head>
<meta property="og:title" content={props.title} />
<meta property="og:url" content={location} />
<meta property="og:image" content={props.logo} />
</Head>
);
}
const Home: NextPage = () => {
const [title, setTitle] = useState('');
const [logo, setLogo] = useState('');
useEffect(() => {
(async () => {
const reviewData = await (await fetch("https://api.")).json();
setTitle(reviewData.name);
setLogo(reviewData.logo);
})();
}, []);
return (
<React.Fragment>
<Box
sx={{
display: 'flex',
flexDirection: 'column',
minHeight: '100vh',
}}
>
<PageHead logo={logo} title={title}/>
</Box>
</React.Fragment>
)
}
export default Home
在我导出静态站点或作为开发人员运行之后。当我刷新页面时,在 console.log 中我一个接一个地得到以下 3 个日志。这告诉我它确实从 api 中一一获取徽标和标题并刷新控制台,但由于某种原因,它没有在 HEAD 中填充标题和图像标签。
知道如何解决它。
【问题讨论】:
-
硬编码
title和logo是否有效? -
是的,它确实有效,它也填充了 但不是我通过的那个,出于某种原因
-
你是否在同一页面的其他组件中使用了 next/head?
-
不,我想为什么我得到三个控制台,可能是因为每次设置值都会刷新组件。但是由于某种原因它没有刷新Head?
-
我无法使用您共享的完全相同的代码复制该问题。你能提供一个minimal reproducible example吗?