javascript - 传递 React Helmet 字符串化 HTML 标签
问题描述
我正在尝试一种使用 React-Helmet 轻松管理跨 SPA 的多个页面/部分的 Meta 的特定方法。并希望在某些情况下将标签作为字符串传递的选项。
基本理念
- 我有一个 meta.js 文件,从配置渲染:
export default ({ metaConfig }) => {
return (
<Helmet>
<title>{metaConfig.title}</title>
<meta name="description" content={metaConfig.description} />
{...Removed a heap of tags for simplicity}
{metaConfig.custom}
</Helmet>
);
};
我添加了自定义数组,以便您可以逐个路由将额外的脚本/标签插入 HEAD。
当您有一组 HTML 元素时,这可以正常工作:
custom: [
<meta name="custom" content="Custom content" />
]
但显然不能作为字符串数组工作,我希望能够包括在内。
有什么简单的解决方案吗?
解决方案
我想出了一个简单的方法,但希望有更好的建议
在 metaConfig 文件中,我将定义自定义对象,如下所示:
custom: [
<script>This is a standard html element</script>,
{
tag: 'script',
content: `This is a custom element`
}
]
并且在通过它们进行渲染时只需在 meta.js 文件中返回或创建一个新元素:
{metaConfig.custom && metaConfig.custom.map(meta => {
return meta.tag
? React.createElement(meta.tag, meta.props, meta.content)
: meta;
})}
推荐阅读
- r - 设置 ggthemese 连续刻度的中点
- android - Flutter 模块代码未显示在 github 上
- javascript - 如何使用 crypto.js 创建 AES-256 十六进制字符串?
- javascript - 有没有办法让两个兄弟组件在 ReactJS 中异步了解状态?
- vb.net - 如何在 vb.net 中从具有相同类名的 webbrowser 中获取价值
- javascript - 如何为每个编辑的特定工作表做些什么?
- sql-server - 使用 $using:Variablename 向 Invoke-Command 提供局部变量
- reactjs - 动态创建 React Boostrap 导航栏时出现关键错误
- python - 如何根据 Scrapy 中第一个请求的响应构造请求列表?
- ansible - 为什么 ansible set_fact 列表结果包含很多 // //