未处理的拒绝(TypeError):无法读取未定义的属性

时间:2018-11-04 10:09:29

标签: javascript reactjs

当我可以通过console.log()访问数据时,我找不到我为什么不能获得数据!

use WP_List_Table;
class Test_WP_List_table extentds WP_List_Table {
.....

当我运行此命令时一切正常,并且可以通过控制台查看数据:

export class InnerTicket extends React.Component{
constructor(props){
    super(props);
    this.state = {
        ticket: ''
    }
}

componentDidMount() {
    this.getTicket().then(result => this.setState({
        ticket: result
    }))
}

getTicket(){
    const slug = this.props.match.params.id;
    return this.props.TicketsStore.loadTicket(slug);
}
render(){
    console.log(this.state);

但是当我想在这样的视图中显示数据时:

{ticket: {…}}ticket: {success: true, data: {…}, error: "", message: ""}data: {result: "success", ticketid: 22, tid: "168552", c: "WHgCsCBO", deptid: 5, …}error: ""message: ""success: true__proto__: Object__proto__: Object

我收到此错误:TypeError:无法读取未定义的属性“状态”

2 个答案:

答案 0 :(得分:1)

我不确定它是否完美,但应该可以正常工作

render(){
    return( <span className="label label-warning">
                            {this.state.ticket.data.status ? this.state.ticket.data.status : null}
                        </span>)

答案 1 :(得分:0)

您已将状态初始化为此:

this.state = {
    ticket: ''
}

因此,在第一个渲染中,this.state.ticket是一个空字符串,并且this.state.ticket.data是未定义的。直到稍后,您才能将state.ticket更新为对象。

要解决此问题,请将初始状态设置为可与您的render方法一起使用的状态,或者使render方法检查是否存在空字符串。