2017-07-13 164 views
0

我有一個簡單的API調用,它設置列表數組的狀態與其響應。我想知道如果執行一個try/catch或錯誤消息,如果出現錯誤的搜索(如錯字),或者數組未使用響應設置,我該如何去做。代碼片斷如下:基於條件的設置狀態reactjs

componentDidMount() { 
    this.search('https://itunes.apple.com/search?term=modern_baseball'); 
} 

search(URL) { 
    return $.ajax({ 
     type: 'GET', 
     dataType: 'json', 
     url: URL, 
     success: function (response) { 
      this.showResults(response); 
     }.bind(this), 
     error: function() { 
      alert("Error handling request"); 
     } 
    }); 
} 

showResults(response) { 
    console.log(response); 
    this.setState({ 
     searchResults: response.results, 
     moveResults: [] 
    }); 
} 
+0

我不確定我是否理解這個問題;你有成功和錯誤處理程序,並且你有你的結果。創建條件並適當地設置狀態。 –

回答

1

嘗試這樣:

componentDidMount() { 
    this.search('https://itunes.apple.com/search?term=modern_baseball'); 
} 

search(URL) { 
    let self = this; //avoid the .bind call and store a ref to the current context for use inside the ajax handlers. 
    return $.ajax({ 
     type: 'GET', 
     dataType: 'json', 
     url: URL, 
     success: function (response) { 
      self.showResults(response); 
     }, 
     error: function() { 
      alert("Error handling request"); 
      self.setState({error: "Error handling request", moveResults:[], searchResults:[]}); //set the state directly if there is an error 
     } 
    }); 
} 

showResults(response) { 
    console.log(response); 
    this.setState({ 
     searchResults: response.results, 
     moveResults: [] 
    }); 
} 

它設置一個變量(個體經營),以目前的情況下(這一點),然後在錯誤處理程序直接調用的setState ajax呼叫。或者,您可以像爲成功處理程序一樣定義回調函數。