我使用Next.js 13与新的应用程序目录,我试图从我的API获取数据。但当我尝试使用async/await时,我一直得到错误:“* 对象作为React子对象无效(找到:[object Promise])。如果你想呈现一个子元素的集合,请使用数组。*”
async function getProducts() {
const { data } = await storefront(productsQuery);
return data.products;
}
export default async function Page({ params }: any) {
const fetchedData = await getProducts();
return (<>
{fetchedData.edges.map((item: any) => (
<Text>{item.node.title}</Text>
))}
</>);
}
这是我的代码。我从API接收的数据是:
"data": {
"products": {
"edges": [
{
"node": {
"title": "Some title",
}
}
]
}
}
}
我尝试使用toString()和map函数中的key属性将标题转换为字符串,但错误仍然存在。在每个文件的顶部,因为我使用脉轮用户界面,但这似乎并不是问题的根源。
我做错了什么?我如何在Next.js应用中正确获取和呈现数据?
提前感谢您的帮助!
2条答案
按热度按时间scyqe7ek1#
通过使用
async
关键字functionPage
(它是一个组件),你暗示这个函数返回一个promise而不是一个react组件。你的函数现在将你的react组件数组 Package 在一个promise中。函数式组件不能返回promise。fykwrbwg2#
您需要确保获取的数据可用。例如: