javascript - 在 reactjs 中设置 componentDidMount 间隔是一种正确的方法吗?

标签 javascript jquery html reactjs

我已经使用 Reactjs 为我的项目创建了聊天应用程序。对于最新更新,我需要每次都访问服务器。我为此要求使用了 setInterval 方法。这种做法是否正确?

例如,

componentDidMount:function(){
  setInterval(function(){
    $.ajax({
      url:this.props.url,
      dataType:"JSON",
      type:"GET",
      success:function(data){
        this.setState({data:data});
      }.bind(this)
    });
  }, 1000);
}

最佳答案

是的,这很好,但递归地使用 setTimeout 通常是首选。如果需要一秒钟以上的时间才能完成,它可以确保您不会同时处理多个请求。

您可能还想立即运行一次。

最后需要清除componentWillUnmount中的超时

componentDidMount: function(){
  function tick(){
    $.ajax({
      url: this.props.url,
      dataType: "JSON",
      type: "GET",
      success:function(data){
        this.setState({data: data});

        this.timer = setTimeout(tick, 500);
      }.bind(this)
    });
  };
  tick();
},
componentWillUnmount: function() {
  clearTimeout(this.timer);
}

关于javascript - 在 reactjs 中设置 componentDidMount 间隔是一种正确的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36170009/

相关文章:

javascript - 如何在弹出窗口 url 中使用带有 $ 符号的变量?

javascript - 在 Redux 中清除数组状态

php - 如何获取服务器的时间并将其移植到这个 JavaScript 函数中?

javascript - 根据先前的选项选择动态更改选择框选项

javascript - 使用 find 函数查找同级值

javascript - onclick 添加另一个脚本在 Javascript 中不起作用

html - 表格单元格属性忽略宽度

height - 没有 jQuery 的现代浏览器的 width() 和 height()

javascript - 仅使用文本偏移量在字符串中插入标签

javascript - 从 axios 响应中 react 设置状态