我正在尝试通过数组映射来呈现帖子列表。我以前做过很多次,但出于某种原因
renderPosts = async () => {
try {
let res = await axios.get('/posts');
let posts = res.data;
return posts.map((post, i) => {
return (
<li key={i} className="list-group-item">{post.text}</li>
);
});
} catch (err) {
console.log(err);
}
}
render () {
return (
<div>
<ul className="list-group list-group-flush">
{this.renderPosts()}
</ul>
</div>
);
}
我得到的是:
未捕获的错误:对象作为 React 子项无效(找到:[object Promise])。如果您打算渲染子集合,请改用数组。
我已经检查了从 renderPosts 返回的数据,它是一个具有正确值但没有承诺的数组。这里发生了什么?
原文由 Aaron 发布,翻译遵循 CC BY-SA 4.0 许可协议
this.renderPosts()
将返回Promise
而不是实际数据,并且 AFAIK Reactjs 不会隐式解析render
中的承诺你需要这样做