2017-02-03 87 views
2

當我使用SuperAgent時我沒有這個問題,但我決定使用Window.fetch polifyl而我遇到了這個問題。我看到所有數據都已加載,但仍顯示錯誤。 難道你幫我鑑定這個錯誤,請: Screen ShotReact + Fetch + Json。 TypeError:無法讀取undefined的屬性

在渲染()我genereate基於獲得的名單上的組件列表:

render() { 

    if (this.state.data.list) { 
     console.log("render: " + this.state.data.list); 
     var counter = 0; 
     const list = this.state.data.list.map((item) => { 
.... 
+0

您沒有關閉第一個可接聽電話。 –

+0

我想像這樣: 獲得響應後,將此響應發送給下一個函數,並將該函數的結果發送給下一個函數,但是我沒有返回任何結果。這意味着我不會傳遞任何數據,而沒有函數鏈中函數的返回值。 –

回答

4

在你的屏幕截圖的承諾處理程序將無法正常工作:

.then((json) => console.log('parsed json: ', json)) 
.then((json) => { this.setState({ data: json }); }) 

「從解決這一承諾採取的值,並將其傳遞給console.log。然後,採取的console.log的返回值(這是undefined),並把它傳遞給this.setState「。

+0

謝謝你的提示! '取(URL,{ 標頭:{ '接受': '應用/ JSON', }, })。然後加入((響應)=> response.json() .catch(ERR => { console.err(' '$ {}犯錯' 事'!); 返回{};} )) 。然後((JSON)=> { 的console.log( '解析JSON:',JSON); this.setState({data:json}) }) .catch((err)=> {console.log('fetch request failed:',err)} )' –

2
fetch(url, { 
     headers: { 
      'Accept': 'application/json', 
     }, 
    }).then((response) => response.json() 
     .catch(err => { 
      console.err(`'${err}' happened!`); 
      return {}; 
     })) 
     .then((json) => { 
      console.log('parsed json: ', json); 
      this.setState({ data: json }) 
     }) 
     .catch((err) => { console.log('fetch request failed: ', err) } 
     ) 
相關問題