React JS无法读取未定义的属性“ map”

时间:2020-02-11 13:48:20

标签: javascript reactjs

我想从api获取数据,并将其设置为一种状态,然后在map中使用它进行迭代

    const result = await API.getSearch(data);

    if(result.status === 200){
        this.setState({data: result.data, loading: false })
    }

    const result = await API.getSearch(data); // got data successfully

然后:

this.state.data && this.state.data.length > 0 && this.state.data.data.map(function(value, i){

我知道这种错误的意思是,map没有得到任何数据,所以我使用了条件,首先我检查状态是否返回了数据,然后检查数据是否具有长度,但是仍然收到此错误。任何解决方案吗?

3 个答案:

答案 0 :(得分:1)

我猜不是这个

this.state.data.data.map(function(value, i){

应该只有一次数据

this.state.data.map(function(value, i){

答案 1 :(得分:1)

好像您尚未初始化data。 因此,在第一次渲染期间,它是undefinedundefined上,map不存在。导致此问题。

像下面这样声明并定义data

this.state = {
    data: []
}

OR

constructor(props) {
    this.state = {
        data: []
    }
}

答案 2 :(得分:0)

使用解构具有默认值,并确保内部data是数组

    const { data : { data = [] } = {} } = { data: { data: ['foo', 'bar']}  } ;
    
    console.log(data.map(x => x + "--").join());