2017-05-25 73 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

相關問題