arrays - 错误:对象作为 React 子对象无效(找到:带有键 {articles} 的对象)
问题描述
这是我的代码。当我尝试尽可能多地构建组件文章时。我收到错误说明错误:对象作为 React 子项无效(找到:带有键 {articles} 的对象)。如果您打算渲染一组子项,请改用数组。
尽管文章中的值是对象数组。映射时会抛出此错误。我应该在此组件中导入任何内容,否则此代码中是否有任何错误。这是我在控制台中打印文章值时的图像--- >在此处输入图像描述
import axios from 'axios';
import Article from './Article'
class Articles extends Component {
state = {
articles: [],
}
componentDidMount () {
axios.get('https://jsonplaceholder.typicode.com/posts')
.then(response => {
console.log(response);
this.setState({articles: response.data});
});
}
render () {
let articles = this.state.articles.map(article => {
return <Article />;
});
return (
{articles}
);
};
};
export default Articles;
解决方案
您将 JavaScript 对象花括号与 JSX 花括号混淆了。
当您返回时{ articles }
,您实际上是在返回一个对象,该对象具有一个名为 的键articles
,其中 s 的列表Article
作为一个值。
这相当于:
render () {
const list = this.state.articles.map(article => {
return <Article />;
});
return (
{articles: list}
);
};
您只需要返回articles
:
render () {
const articles = this.state.articles.map(article => {
return <Article />;
});
return articles;
};
如果在 JSX 中使用,则使用花括号articles
是正确的:articles
render () {
const articles = this.state.articles.map(article => {
return <Article />;
});
return (
<>{articles}</>
);
};
推荐阅读
- algorithm - 关键词云是如何构建的?
- apache - Apache2 配置到 Nginx 配置?
- laravel - 将laravel部署到heroku时,参数“client_encoding”的值无效:“utf8mb4”(SQL:从“tablename”中选择*)
- jquery - 如何使用数据表“on change”选择选项更新我的数据库中的第二行
- python - 如何从字符串中检测语言,例如我在 python 3 中的 php 函数
- mongodb - 命令 '/bin/sh -c service mongod start' 返回一个非零代码: 1 在 docker
- jupyter-notebook - 在 jupyter notebook 中加载 katex 的散景问题
- javascript - 强制在 css 上刷新浏览器不会使用 react 和 antd 更新代码
- python - 如何根据另一列中的单元格值有条件地填充 Pandas 列
- smartcontracts - Windows 10 - npm i @truffle/contract