componentDidMount函数无法正常工作

时间:2018-10-28 14:34:43

标签: reactjs

因此,我正在创建一个简单的React应用,该应用从JSON API服务器获取数据并将其显示在表格中。这是主要组件的代码:

import React, {Component} from "react"
import Table from "./Table.js"

class Main extends Component{
    constructor(props) {
        super(props);
        this.state = {
            array: null
        }
    }

    render(){
        return(
            <div>
                <Table array={this.state.array} />
            </div>
        )
    }

    componentDidMount() {
        console.log("Checking");
        fetch("https://api.myjson.com/bins/1exld0")
            .then(response => response.json())
            .then(data => {
                console.log(data);
                this.setState({ array: data })
            });
    }
}

export default Main;

但是,当我运行该应用程序时,该表未呈现。这与componentDidMount函数无法正常工作有关,因为我有一行代码:

console.log("Checking")

并且控制台不记录任何内容。

有人可以帮忙吗?

编辑:这是Table和TableRow组件:

import React, {Component} from "react"
import TableRow from "./TableRow.js";

class Table extends Component{
    constructor(props){
        super(props);
        this.state={

        }
    }

    render(){
        var self=this;
        var items=this.props.array.map(function(item, index){
            return <TableRow obj={item} key={index}/>
        })

        return(
            <table>
                {items}
            </table>
        )
    }
}

export default Table

/

import React, {Component} from "react"

class TableRow extends Component{
    constructor(props){
        super(props);
        this.state={

        }
    }

    render(){
        return(
            <tr><td>{this.props.obj.color}</td><td>{this.props.obj.value}</td></tr>
        )
    }
}

export default TableRow

这是在浏览器中运行应用程序时出现的错误:

TypeError: Cannot read property 'map' of null:
var items=this.props.array.map(function(item, index){

2 个答案:

答案 0 :(得分:0)

在Main构造函数中将数组设置为空数组,而不是null。在加载异步数据之前会有一个初始渲染周期,并且由于无法映射到空数组而崩溃。

答案 1 :(得分:-1)

将componentDidMount()从render()方法中移出,即可对其进行修复