javascript - 如何确保我不会将内容替换为旧响应?

标签 javascript node.js reactjs promise

大家好,

我正在上 React 类(class),我已将代码提交给审阅者。他只回复了我几条评论,有一条评论我无法解决。

评论如下:

Check if (query === this.state.query) to ensure you are not going to replace the contents to an old response

部分代码如下:


updateQuery = (query) => {

        this.setState({

          query: query

        })

        this.updateWantedBooks(query);
      }

updateWantedBooks = (query) => {

        if (query) {

          BooksAPI.search(query).then((wantedBooks) => {

            if (wantedBooks.error) {

              this.setState({ wantedBooks: [] });

            } else {

this.setState({ wantedBooks: wantedBooks });

            }       

          })

        } else {

          this.setState({ wantedBooks: [] });

        }

      }

任何人都可以帮助我我应该做什么?

问候。

最佳答案

代码审查者是对的,如果用户输入了完全相同的查询,您真的不想替换响应。

您必须在某处存储用户最近搜索过的内容:

this.setState({ wantedBooks: [], query });

如果成功响应:

this.setState({ wantedBooks, query });

然后在进一步搜索的情况下检查它:

if (query && query !== this.state.query) {
    // continue the search only if query is different that current

关于javascript - 如何确保我不会将内容替换为旧响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58864176/

相关文章:

javascript - 如何检查动态添加的 tealium utag 是否已提交?

javascript - Youtube 视频布局和自动播放问题

javascript - 从 node.js/javascript 中的对象树检查/分配

node.js - 如何从 Nodejs 发送包含 html 内容的 SENDGRID 电子邮件?

javascript - 页脚高度根据网址?

reactjs - react 导航显示/隐藏抽屉项目

javascript - 在 jquery 函数中将 this 和字符串作为参数传递

node.js - Socket.io、Node、Cordova,我在客户端接收器中没有收到消息

javascript - 通过单击按钮更改函数中的状态不会触发 React.js 中的重新渲染

javascript - ExpressJS 设置/获取/使用 cookie