javascript - 错误:对象作为 React 子项无效(找到:[object Promise])。如果您打算渲染一组孩子,请改用数组
问题描述
所以我正在学习 React 和非常基本的全栈 Web 开发,当我试图在我的 Mongodb 中获取一组对象时,我一直在兑现这个承诺。通过 Postman,我知道它正在返回我想要的 [{},{},...]。但是当我尝试在我的组件中使用它来映射我不断得到的名称时
Error: Objects are not valid as a React child (found: [object Promise]). If you meant to render a collection of children, use an array instead.
在我的 Web 控制台上,我的列表显示为 Promise,但其中包含我想要的数组。我一直在用我的承诺尝试不同的设置,就像这里的许多帖子所说的那样,以解决它,但我尝试过的一切都不会改变这个结果。
const ArticlesListPage = async () => {
let testResult = function()
{
return fetch('/api/articles-list').then(result => {return result});
};
let results = testResult();
results.then(function(res){
console.log(res.json());
})
}
export default ArticlesListPage;
和组件:
const ArticlesList = ({articles}) => (
<>
{articles.map((article, key) => (
<Link className="article-list-item" key={key} to={`/article/${article.name}`}>
<h3>{article.title}</h3>
<p>{article.content[0].substring(0,150)}...</p>
</Link>
))}
</>
);
export default ArticlesList;```
解决方案
这是因为您正在返回 aPromise
并且 aReact Component
只能返回 JSX。有关详细信息,请参阅此问题:
为什么放置一个 div 标签允许这个 React 代码编译?
这是错误的部分,获取返回:
return fetch('/api/articles-list').then(result => {return result});
页面(因为是 a React Component
)不能返回 afetch
推荐阅读
- ios - UICollectionView 崩溃
- android - 使用 Dagger 2 对整个应用程序使用 MediaBrowserCompat 的单个实例
- javascript - 如何以角度创建自定义formio复选框组件
- hibernate - com.dao.impl.EnvironmentPropertyRepositoryImpl 中构造函数的参数 0 需要找不到类型为“java.lang.Class”的 bean
- shell - 结合“aws iam list-users”的输出和“aws iam list-groups-for-user”的相应信息
- json - 如何在 typeScript 中访问 JSON 属性
- node.js - NodeJS 无法处理标头 > 8KB 的请求
- sql - SQL - 在一个没有不规则空值的表中联合所有用户
- git - Git fetch 未按预期工作“:gone]”未添加到分支描述中
- c++ - 从替代构造的变体返回可构造的