我在一个带有后端Wordpress和前端反应的项目上工作。
但是,当我试图从Json Data获取标题时,我有这个:
TypeError:this.state.project.title未定义
我可以看到反应网络扩展中存在数据:
截图:
所以我不知道为什么会出现这个错误。
这是我的代码,谢谢你的帮助;):
import React, { Component } from 'react';
import {LoadingSpin} from "./LoadingSpin";
export class Project extends Component {
constructor(){
super();
this.state = {
project: [],
loading: true
}
}
componentDidMount() {
let dataURL = "http://api.florentbruziaux.com/wp-json/wp/v2/portefolio_projects/"+ this.props.match.params.id + "?_embed";
fetch(dataURL)
.then(res => res.json())
.then(res => {
this.setState({
project: res,
loading:false
})
});
}
render(){
let ahah = this.state.project.title.rendered;
console.log(ahah);
return (
<div>
{ (this.state.loading) ? <LoadingSpin/> : null}
<h1 className="title"> </h1>
</div>
);
}
}
答案 0 :(得分:1)
componentDidMount(),因此在调用之前会有一个初始渲染。首次拨打Object
时,系统不会加载project
。你需要处理这个案子。您已经拥有render
,因此在state.loading
为真时,请勿尝试访问project
上的任何内容。
答案 1 :(得分:0)
this.state.project.fieldName
每次都会说undefined因为没有项目/项目不是对象(你在构造函数中使它成为一个数组)。在获取数据之后它将可用,但在此之前安装组件。
尝试在获取后检查结果,仅使用项目数据if !loading