【发布时间】:2020-05-07 23:02:49
【问题描述】:
我正在从公用文件夹的 Blog.json 文件中获取 json 数据,但状态正在返回数组中的一个数组,我无法获取我需要的数据。
这是我的代码:
export default class BlogPage extends React.Component {
constructor(props) {
super(props);
this.state = {
resultsLoaded: true,
blogs: [],
error: null
}
}
componentDidMount = () => {
fetch('./Blog.json')
.then(res => res.json())
.then(
(result) => {
let blogArray = Object.values(result);
this.setState({
resultsLoaded: true,
blogs: blogArray
})
return blogArray
},
(error) => {
this.setState({
isLoaded: true,
error
});
}
)
}
render() {
const {error, resultsLoaded, blogs} = this.state;
if (error) {
return (
<div>Error: {error.message}</div>
);
} else if (!resultsLoaded) {
return (
<div>Loading.....</div>
);
} else {
console.log(this.state);
let blogResults = blogs.map((e, index) => (
<div>
<h3>Working!</h3>
<p>{e.title}</p>
</div>
))
return (
<div>{blogResults}</div>
);
}
}
}
我的 JSON 文件如下所示:
{
"data": [
{
"id": "1",
"title": "Work Ethic",
"post": "Lorem ipsum dolor sit amet...",
"image": "",
"date": ""
},
{
"id": "2",
"title": "Impostor Syndrome",
"post": "Lorem ipsum dolor sit amet...",
"image": "",
"date": ""
},
{
"id": "3",
"title": "Getting Hired",
"post": "Lorem ipsum dolor sit amet...",
"image": "",
"date": ""
}
]
}
另外,我收到以下错误:“列表中的每个孩子都应该有一个唯一的“关键”道具。”,并且 {e.title} 不显示。我猜是由于数组错误。
谢谢。
【问题讨论】:
-
您收到
key消息是因为您没有设置密钥。关于返回值——你得到你所得到的;如果您需要深入研究结果对象,那么就这样做。 -
似乎博客数组在索引 0 处包含另一个数组。在将其设置为状态之前尝试记录/打印结果。