- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从 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 中一一获取 Logo 和标题并刷新控制台,但由于某种原因没有将其填充到标题和图像标签的 HEAD 中。
知道我该如何解决它。
最佳答案
出于 SEO 目的,您需要在构建时初始化页眉
如果您在应用程序在客户端呈现后获取数据。这对 SEO 不再有意义,因为那时搜索引擎机器人无法读取您的标题。
因此您需要在构建时在服务器上呈现您的Header
组件。
Next.js 为您提供了一些方法来支持您在所有情况下(服务器端渲染、静态站点生成、增量站点重新生成...)在构建时获取数据
这是他们的官方文档:https://nextjs.org/docs/basic-features/data-fetching
下面是一个静态生成我的博客详情页面的例子:
export const getStaticProps = async ({ params }) => {
const response = await fetchAPI(params.slug); // Fetch your data
// Response 404 page if data is failed to fetch
if (!response.success) {
return { notFound: true };
}
const { title, description, images } = response;
return {
props: {
pageHeader: {
title: name,
metas: [
{
name: 'description',
content: description,
},
{ property: 'og:title', content: name },
{
property: 'og:image',
content: images[0] || null,
},
{
property: 'og:description',
content: description,
},
],
},
productData: response,
},
revalidate: 5 * 60, // re-generate each 5 minutes
};
};
上面获取的所有数据都将传递给您的页面组件
。您可以使用这些数据 Prop 在构建时呈现您的页眉。此 header 将包含在您的第一个 HTML 文档中。然后搜索引擎机器人可以读取和处理它。
import Head from 'next/head';
const BlogDetailPage = (pageProps) => (
<>
<Head>
<title>{pageProps.pageHeader.title}</title>
{pageProps.pageHeader.metas.map((attributes, index) => (
<meta {...attributes} key={index} />
))}
</Head>
<YourPageComponent />
</>
);
关于reactjs - 在导出的静态网站的 NextJS Head 页面中传递动态标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69082726/
在git中,以下有什么区别? 头 头^ HEAD~1 HEAD~2 它们与 master 有什么关系?那么有没有MASTER^, MASTER~1?? 最佳答案 HEAD 是当前分支上最新提交的同义词
我想实现一个 LinkedListremove 方法,该方法可以删除任何特定位置的项目,但在本例中,我最感兴趣的是删除列表开头(第 0 个位置)的项目。 我的代码适用于 n 大于零的值,因此我为 n=
的顺序有什么关系吗?或 或 标签位于 中? (愚蠢的问题,但其中一件事我直到现在才考虑过。) 最佳答案 优化 据 Yahoo! 的人说你应该put CSS at the top和 scripts
HEAD 是指向当前分支的指针。我见过 HEAD 祖先的各种符号,包括 HEAD~2 HEAD^2 HEAD@{2} 头~~ 头^^ 以上每一项到底是什么意思?这方面的文件在哪里? 最佳答案 来自文档
我对 git 很陌生,任何人都可以帮助我。 我实际上被困在什么是“git diff HEAD”。 “git diff HEAD”和“git diff HEAD HEAD~1”有什么区别 最佳答案 gi
我似乎不知道如何获得 git_reference *到特定 Remote 的 HEAD。 我有: git_repository * repo = NULL; git_reference * ref
关于 firefox浏览器控制台,我可以访问 容器如下所示。 > window [object Window] > documentObject = window["document"
我使用 asp.net 4 和 c#。 我在 Web From 页面中有一个 Web 用户控件。当我包含 Web 用户控件时,我还想以编程方式在最终生成的页面的标记中包含一些脚本。 知道怎么做吗?也许
这可能是一个非常愚蠢的问题,但是加载文件中标签之间的数据并通过 PHP include() 加载它是愚蠢的吗?这样就可以更轻松地进行编辑。谢谢。 最佳答案 不,这不会是愚蠢的。代码重复越少越好。 关于
我编写了以下 facelet index.xhtml: 当我从浏览器获取
我有一个不断递增的“指针”,我需要最终返回指针的“头”。我进退两难,要么使用“pointer[0]”,要么使用另一个名为“head”的变量并初始化它并在最后返回。我觉得前者使代码看起来很脏,后来占用的
git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME_PRODUCTION.git HEAD 和 git pu
当我像这样将 Git 子模块添加到 Git 存储库时, git submodule add ssh://server/proj1/ proj1 git submodule init git submo
我的本地存储库中有一个我不打算推送的提交(A)。现在,HEAD 在 A 处。假设我想在提交 (A) 之上创建另一个提交 (B) NOT,但在前一个提交之上而不是提交 (A)。 如何在不丢失最新
多次调用 head.load 是否同步? 我的意思是,如果我们有这样的代码: head.load('scr1.js',...,'scr8.js'); head.load('scr11.js',...,
执行以下查询时出现以下错误: #1054 - Unknown column 'headings.heading' in 'field list' 标题表中肯定有一个名为“标题”的列。当我测试它时,问题
我试图显示上次提交与之前提交之间的差异: git diff HEAD^ HEAD 但是什么都不显示。事实上,我知道这两个提交之间存在差异。 我做错了什么,我应该如何改正? P.S.:我觉得这个问题以
这就是场景。我有一个运行一些测试的脚本。我需要制作另一个接受 git 提交名称作为参数的脚本,然后执行以下操作: 保存当前提交状态 - 分支名称或未命名提交。 在指定提交时切换到分离的 HEAD 针对
我发现自己经常输入这个,比如当我做了一些改变,提交它,然后要么需要查找我在那里做的事情来弄清楚下一步该做什么,要么确保我没有添加任何意外的东西在将其推送到远程之前提交。 无可否认,diff HEAD^
我是否理解正确,Git head(小写)和 Git HEAD(大写)的区别在于前者是结束提交,后者只是当前提交(无论是最终提交还是非最终提交被选为 HEAD 提交)? 编辑:“结束提交”是指“给定分支
我是一名优秀的程序员,十分优秀!