javascript - 如何在 next.js 部分创建动态标题?
问题描述
我有一个功能齐全的网站,但头部部分没有检索特定页面<title>
和<meta description>
.
例如,如果我在关于页面上,标题标签为“关于我”,我希望在<title>
标签中呈现“关于我”。我基本上需要的是在我的 Head 组件中加载由实际标题和描述组成的道具、变量或类似的东西。我已经阅读了官方文档中的一些示例,但是没有使用动态数据更新头部的示例。
这是我的组件的当前代码:
import React from 'react';
import NextHead from 'next/head';
const Head = ({ title, description }) => (
<NextHead>
<meta charSet="UTF-8" />
<title>My Website{title}</title>
<meta name="description" content={description || ''} />
<meta name="viewport" content="width=device-width, initial-scale=1" key="viewport" />
</NextHead>
);
我为帖子和页面创建了一个 Layout.js 组件。我之前描述的<Head>
是在布局组件中导入的。
import React from 'react';
import Head from '../components/Head';
export default ({ children, as, settings = {}, title="default text" }) => (
<main>
<Head>
<title>{title}</title>
</Head>
<div className="app__container">
<div className="row">{children}</div>
</div>
</main>
);
我希望,例如,当我在/work/great-client时,我会看到一个带有great-client的更新<title>
标签
解决方案
它应该是:
import React from 'react';
import Head from '../components/Head';
export default ({ children, as, settings = {}, title="default text" }) => (
<main>
<Head title={title}>
<div className="app__container">
<div className="row">{children}</div>
</div>
</main>
);
如果要将其用作 Head 的子级,则必须修改 Head 组件:
import React from 'react';
import NextHead from 'next/head';
const Head = ({ title, description, children }) => (
<NextHead>
<meta charSet="UTF-8" />
{children}
<meta name="description" content={description || ''} />
<meta name="viewport" content="width=device-width, initial-scale=1" key="viewport" />
</NextHead>
);
推荐阅读
- nginx-config - Nginx [emerg] 没有其他文件包含语句时的重复位置
- c++ - 语句错误:“预期 ')' 在 ',' 标记之前
- django - 如何使用 3rd 方库格式化 Django 管理员中的只读字段?
- ios - Objective-C 创建弱块来检查内存释放
- react-native - 获取不返回值
- visual-studio-code - 防止 VS Code 多行注释中的尾随和前导空格
- javascript - Vanilla JavaScript:定时的 innerHTML 无法按预期工作
- python - 如何读取 csv 文件,然后找出文件中的特定字段是否包含 Python 中的有效 utf-8 字符
- php - 如何使用 phpmailer 发送附件,但我更喜欢用户 mail()
- java - Heroku - 我部署的 Spring MVC 项目不起作用