Wordpress API,React:this.state.project.title未定义

时间:2017-12-05 09:22:38

标签: javascript json wordpress reactjs api

我在一个带有后端Wordpress和前端反应的项目上工作。

但是,当我试图从Json Data获取标题时,我有这个:

TypeError:this.state.project.title未定义

我可以看到反应网络扩展中存在数据:

截图:

enter image description here

所以我不知道为什么会出现这个错误。

这是我的代码,谢谢你的帮助;):

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>
    );
}

}

2 个答案:

答案 0 :(得分:1)

在安装组件后调用

componentDidMount(),因此在调用之前会有一个初始渲染。首次拨打Object时,系统不会加载project。你需要处理这个案子。您已经拥有render,因此在state.loading为真时,请勿尝试访问project上的任何内容。

答案 1 :(得分:0)

this.state.project.fieldName每次都会说undefined因为没有项目/项目不是对象(你在构造函数中使它成为一个数组)。在获取数据之后它将可用,但在此之前安装组件。

尝试在获取后检查结果,仅使用项目数据if !loading