javascript - 根据reactjs中的条件设置状态

标签 javascript reactjs

我有一个简单的 API 调用,用于设置列表数组的状态及其响应。我想知道如果存在错误的搜索(即像拼写错误)或者数组未使用响应设置,我将如何实现 try/catch 或错误消息。代码片段如下:

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: []
    });
}

最佳答案

尝试这样的事情:

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: []
    });
}

它将变量 (self) 设置为当前上下文 (this),然后直接在 ajax 调用的错误处理程序中调用 setState。或者,您可以定义一个回调函数,就像为成功处理程序所做的那样。

关于javascript - 根据reactjs中的条件设置状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45085795/

相关文章:

javascript - P5.js 中的定时计数器

javascript - Wavemaker 7 中的服务变量事件

javascript - Redux 在到达 reducer 之前检测到状态突变

reactjs - 如何渲染NotFound组件react-router-config

javascript - Jquery在不使用split的情况下在div内的x个单词后插入html

javascript - React-Native:通过 FlatList 选择传递数据

javascript - 删除 HTML 元素时销毁钩子(Hook)

javascript - 从react.js 中的Express.js API 获取数据。 postman 的请求正在运行

reactjs - 切换复选框时 react (Reakit): How to ask for confirmation,?

javascript - react 错误。 this.state.time.toLocaleTimeString 不是一个函数