2017-05-25 88 views
1

所以我调用API并将其用于setState。.map(),Undefined不是React Native中的函数

我的状态:

state = { 
    candlesticks: [] 
}; 

我的API调用,并承诺功能:

componentDidMount() { 
    axios 
     .get(
    "apiurl" 
    ) 
     .then(data => { 
     let mappedData = data.map((record) => {record.date *= 1000}); //getting the error here with the map()function 
     this.setState({ 
      candlesticks: mappedData 
     }); 
     }); 
    } 

我试着在代码的不同的变化,但它仍然给这个错误。 我正在使用Expo框架。

未定义不是函数 (评价 'data.map(功能(记录){record.date * = 1000})')

+1

可能你必须解析响应中的'data'。这可能类似于'data.body.map'或'data.content.map'。打印'data'来查看它真正包含的内容! – Sulthan

+0

在我知道之前,我在网上使用了这些相同的数据。然而,我用jQuery然后。 – furball514

回答

2

Axios公司返回response对象。在响应内部,您有数据的数据属性。
所以,你需要做的是:

componentDidMount() { 
    axios.get("apiurl") 
    .then(response => { 
     let mappedData = response.data.map((record) => {record.date *= 1000}); //getting the error here with the map()function 
     this.setState({ 
      candlesticks: mappedData 
     }); 
    }); 
} 

编辑

似乎并不可能有一个与爱可信的问题,但只是为了排除这种可能,尽量使用内置的fetch模块并查看数据是否仍为空。

componentDidMount() { 
    fetch("apiurl") 
    .then(response => { 
     return response.json(); 
    }) 
    .then(data => { 
     let mappedData = data.map((record) => {record.date *= 1000}); 
     this.setState({ 
      candlesticks: mappedData 
     }); 
    }); 
} 

如果它为空,那么问题出在您的服务器上。

+0

我意识到响应对象这是一个愚蠢的错误。谢谢。 – furball514

+0

尽管从响应对象返回的数据全是'null'。 – furball514

+0

我该如何解决这个问题? – furball514

相关问题