javascript - 为什么我的 API 调用会收到重复的数据,而这些数据本应是随机的?

标签 javascript reactjs api http

因此,我正在构建一个 React 应用程序,该应用程序进行 API 调用以接收包含引用、作者和其他一些信息的随机对象。当组件安装时(页面刷新时),对象被随机化。但是,绑定(bind)到最初拉取 API 的同一函数的按钮仅接收与页面加载时相同的对象。随机化是从端点提供的,而不是在我的代码中提供。

不知道为什么这不起作用,因为收到的数据在页面刷新时是唯一的,但在 onClick 事件上却不是。

这是我正在使用的一些代码:

我的 API 获取函数:

httpCallout(){
    fetch('https://quotesondesign.com/wp-json/posts?filter[orderby]=rand&filter[posts_per_page]=1')
    .then(response => response.json())
    .then((data) => {
      const quote = data[0].content;
      this.setState({
        quote: quote,
        author: data[0].title
      });
    });
  }

生命周期函数内的调用:

  componentDidMount(){
    this.httpCallout();

  }

然后是元素

<button id="new-quote" className="btn btn-light" onClick={this.httpCallout}>New Quote</button>

同样,我希望在每个点击事件上收到一个包含新数据的新对象,但是,我收到的数据与页面加载时的数据相同。

编辑: 这只是被缓存的数据。我在获取请求中添加了 {cache: "no-cache"} ,问题就解决了。该问题已被标记为重复,但我发现解决方案需要略有不同,因为我的问题是使用 fetch API 而不是使用 jQuery 或 AJAX。

最佳答案

使用 {cache: "no-cache"} 禁用响应缓存:

fetch(
'https://quotesondesign.com/wp-json/posts?filter[orderby]=rand&filter[posts_per_page]=1',
 {cache: "no-cache"}
)

更多信息:https://hacks.mozilla.org/2016/03/referrer-and-cache-control-apis-for-fetch/

关于javascript - 为什么我的 API 调用会收到重复的数据,而这些数据本应是随机的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56443547/

相关文章:

node.js - Controller 上的 Socket.IO

api - 如何在 golang 中使用 gin-gonic 服务器编写流 API?试过 c.Stream 没用

javascript - 使用 Bootstrap,我只能让文本充当链接,而不是整个按钮?

javascript - 诸如 Chai 之类的断言库如何在不强制调用函数的情况下工作?

javascript - TinyMCE - 添加键绑定(bind) CNRTL-S COMMAND-S 以调用 AJAX 保存功能

javascript - 即使在调整大小后也下载原始 Canvas

javascript - 配置 Webpack 使 React 使用多个条目和输出

javascript - 尽管使用 extraData,但删除最后一项后无法重新渲染 FlatList - React Native

ruby-on-rails - 如何使用单例重构包装器来设置 session ?

reactjs - 在 Webpack 中使用带有 CSS 模块的语义 UI