【发布时间】:2021-01-17 05:50:17
【问题描述】:
我的 React 返回出现语法错误
语法错误:意外标记,应为“,”
如果我删除
{data.nodes && data.nodes.map((node) => (
{node.title}
))}
我得到一个不同的错误,但我确实在我的终端中看到了我的所有 JSON 数据,所以我知道它正在被拉取。我在返回时无法循环/映射它
删除地图时的错误... 错误:对象作为 React 子项无效(找到:[object Promise])。如果您打算渲染一组子项,请改用数组。
所以我的逻辑是将数据呈现为 JSX,然后将其从 GetSlides 传递到 Page。您也会看到 {page} 也通过了,但效果很好
async function GetSlides() {
const data = await getHomeSlides()
console.log(data)
if (!data) return null;
return (
<div>
<h1>Slides</h1>
{data.nodes && data.nodes.map((node) => (
{node.title}
))}
</div>
)
}
export default function Page( {page} ) {
return (
<>
<Layout>
<Head>
<title>{ page.seo.title }</title>
<meta name="description" content={page.seo.metaDesc} />
</Head>
<Header />
<ContainerFull>
<h1>{ page.title }</h1>
<GetSlides />
<div dangerouslySetInnerHTML={{ __html: page.content }} />
</ContainerFull>
</Layout>
</>
)
}
这是查询
const API_URL = process.env.WORDPRESS_API_URL
async function fetchAPI(query, { variables } = {}) {
const headers = { 'Content-Type': 'application/json' }
if (process.env.WORDPRESS_AUTH_REFRESH_TOKEN) {
headers[
'Authorization'
] = `Bearer ${process.env.WORDPRESS_AUTH_REFRESH_TOKEN}`
}
const res = await fetch(API_URL, {
method: 'POST',
headers,
body: JSON.stringify({
query,
variables,
}),
})
const json = await res.json()
if (json.errors) {
console.error(json.errors)
throw new Error('Failed to fetch API')
}
return json.data
}
export async function getHomeSlides() {
const data = await fetchAPI(`
{
artwork {
nodes {
artwork {
available
description
medium
price
size
arttypedisplay
homePageSlideshow
}
title
uri
slug
seo {
metaDesc
title
}
}
}
}
`)
return data?.artwork
}
【问题讨论】:
-
{node.title}不是有效的 JSX。你想渲染什么? -
现在,我正在尝试遍历数据并显示标题,一旦正确显示并且我可以看到结果,我将对其进行更多格式化
-
如果
node.title是一个字符串,那么只需删除括号({}),它应该是可渲染的。 -
好的,现在我得到另一个错误错误:对象作为 React 子级无效(找到:[object Promise])。如果您打算渲染一组子项,请改用数组。在 GetSlides 中(在 pages/index.js:26)
-
在 Page 函数中使用