tools:
- name: Hammer
text: Use a wooden hammer
- name: Glue
text: PVA glue works best for this application
- name: Paint
text: Choose your favourite colour
我可以在我的post模板中映射,没有麻烦,比如我想获得每个工具的名称:
js prettyprint-override">{post.frontmatter.tools.map(item => (
<span key={item.name}>{item.name}</span>
))}
我将这个数组传递给我的SEO组件,如下所示:
<SEO tools={post.frontmatter.tools} />
然后在我的SEO组件中,我可以访问那里的所有内容,这是我组件中的内脏,但map函数在这里不工作,我不知道为什么?
import React from "react"
import Helmet from "react-helmet"
const SEO = ({
type,
tools,
}) => {
const seo = {
type: type,
howToTools: tools,
}
let schemaTools = seo.howToTools
var schemaToolsWithType = schemaTools.map(function(item) {
item.@type = "HowToTool"
return item
})
console.log(newArray)
const schemaType = seo.type
let schemaHowTo = null
if (schemaType === "howto") {
schemaHowTo = {
/* HowTo Schema */
"@context": "http://schema.org",
"@type": "HowTo",
tool: schemaToolsWithType,
}
}
let schemaArticle = null
if (schemaType === "article") {
schemaArticle = {
{/* Article schema here */}
}
}
return (
<>
<Helmet>
{/* Insert schema.org data conditionally (HowTo/Article)*/}
{schemaType === "howto" && (
<script type="application/ld+json">
{JSON.stringify(schemaHowTo)}
</script>
)}
{schemaType === "article" && (
<script type="application/ld+json">
{JSON.stringify(schemaArticle)}
</script>
)}
</Helmet>
</>
)
}
export default SEO
[
{
"@type": "HowToTool",
"name": "Hammer",
"text: "Use a wooden hammer"
},
{
"@type": "HowToTool",
"name": "Glue",
"text: "PVA glue works best for this application"
},
{
"@type": "HowToTool",
"name": "Hammer",
"text: "Choose your favourite colour"
}
]
let schemaHowToTools = []
seo.howToTools.map(tool =>
schemaHowToTools.push({
"@type": "HowToTool",
name: tool.name,
text: tool.text,
})
)
const schemaTools =
seo.howToTools &&
seo.howToTools.map &&
seo.howToTools.map(tool => {
const schemaTypeTool = {
"@type": "HowToTool",
}
return Object.assign(schemaTypeTool, tool)
})
我建议使用安全导航来避免这样的错误。例如:
const result = tools && tools.map && tools.map(item => { return // etc })
只有当工具实际上是一个数组时,这才会在工具上映射。
甚至更好的是,您现在可以在JS中使用可选链接:
const result = tools?.map(item => { return // etc })
我有以下代码: 提交用户名和密码后:出现以下错误: 在以下行: 有什么问题?用户名不保存吗?(我用的是盖茨比)
我在我的Gatsby应用程序中得到了这个错误,该应用程序为作者提取places数据。当author.social的map()点为null时,该错误将显示 谢谢
问题内容: 您好,我正在尝试将React-Router与Firebase配合使用。但这给了我这个错误。 无法读取null的属性“ props” 这正是代码,我正在使用我的react-router 向下代码在组件上作为loginpanel组件。 我的react路由器在main.jsx上声明,我的react-router看起来像这样。 问题答案: 在回调中,指针不再指向您的React组件。有很多方法可
我收到以下JavaScript错误: TypeError:无法读取null的属性“title” 代码如下: mds-iMac: cmscart imac$nodemo app[nodemo] 1.11.0[nodemo]随时重启,输入[nodemo]观看:.[nodemo]启动(node: 2274)DeprecationWarning:在猫鼬中被弃用 [nodemon]应用程序崩溃-正在等待文件
问题内容: 除了添加新笔记,一切似乎都可以在这个小应用程序中使用。按钮位于Board组件上。 我知道这个问题通常是由于未正确绑定“ this”的值引起的。我不确定这是否是这里的问题,或者我是否缺少其他东西。谢谢 演示:http://jsbin.com/pewahi/edit?js,输出 问题答案: 您的代码很好。这可能是JSBin的错误,以及如何使用Babel处理转译。如果将杂项添加到代码的顶部,
我知道有类似的线程讨论范围问题。 使用以下组件 当您单击时,您会得到的属性'setState' 我知道你可以像这样做,但所有这些看起来都很奇怪,只是为了让它工作。 什么被认为是最优雅的方式来做到这一点?当然,人们必须有一个首选的方式,除了眼睛疼痛之外,还有其他好处?