【问题标题】:API response not updating after x seconds reactJSx 秒后 API 响应未更新 reactJS
【发布时间】:2022-01-31 07:18:25
【问题描述】:

我正在尝试自动更新表格 - 在我的测试中,我每 10 秒记录一次输出,但响应与初始组件渲染保持相同

componentDidMount() {       
    this.interval = setInterval(this.getData, 10000);
    this.getData()        
}

getData = () => {
    axios.get(`myApiUrl`)
        .then(response => {
            this.setState({ data: response.data.entries })
            console.log(response.data.entries)
        })
        .catch(error => {
            console.log(error)
        })
}

componentWillUnmount() {
    clearInterval(this.interval)
}

如果我每 10 秒手动尝试从邮递员那里获取数据,更新后的更改工作正常。

【问题讨论】:

  • 您期望每 10 秒的“变化”是多少?看起来您只是一遍又一遍地发出完全相同的 API 请求,所以结果不会有所不同
  • 数据正在从另一个来源更新 - 我希望看到这些更改每 10 秒反映一次。 @Jayce444
  • 您的浏览器可能正在缓存数据,因为请求没有改变。如果您控制 API 的服务器,您可能需要发送正确的响应标头以确保浏览器不会缓存它。
  • 这可能就是你需要的(useEffect hook):stackoverflow.com/questions/57542264/…
  • @RobinZigmond 正确!

标签: javascript reactjs axios


【解决方案1】:

@Robin Zigmond 是正确的

更新了删除缓存的调用

getData = () => {
        axios.get(`myApiUrl`, {
            headers: {
                'Cache-Control': 'no-cache',                
            }
        })
            .then(response => {
                this.setState({ data: response.data.entries })
                console.log(response.data.entries)
            })
            .catch(error => {
                console.log(error)
            })
    }

【讨论】:

    猜你喜欢
    • 2021-11-17
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多