javascript - 在一定时间间隔后更新 react 状态

标签 javascript arrays reactjs frontend

constructor(){
    super();
    this.state={
        data : [1,2,3,4,1,2,3,4,1,3,1,4,12,2,3,2]
    };

}
componentDidMount(){setInterval(this.updateCanvas(),5000);}

updateCanvas() {
    console.log(this.props.newData);
    let data = this.state.data.slice();
    let length = data.length;
    console.log(length);
    data.push(20);
    this.setState({data:data},()=>{console.log(this.state.data);});
}

我试图每 5 秒向状态推送一个新值,但状态会立即发生变化。如何才能达到我想要的效果?

最佳答案

状态会立即更改,因为您通过添加括号来调用立即传递给 setInterval 的回调方法:

setInterval(this.updateCanvas(),5000);
//---------------------------^
// Adding these to function will invoke it

解决方案是将引用传递给不带括号的函数(并且它们不会立即调用它)

setInterval(this.updateCanvas,5000);

关于javascript - 在一定时间间隔后更新 react 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44984075/

相关文章:

javascript - Polymer 及其 Shadow DOM 中的 CSS 封装限制

arrays - 按相应范围对数组进行排序

reactjs - Chrome DevTools 未显示正确的文件名

javascript - React 从状态中的多个数组传递 props

reactjs - 在react-testing-library中按id查找元素

javascript - 如何在浏览器窗口关闭或导航到JS中的另一个网站时显示确认

javascript - 仅部分使用 jquery 将 div 从左向右滑动

javascript - 将表单数据发送到 firebase 函数

Java数组通过类构造函数初始化(性能问题)

c# - 从数组中查找大写的最后一个单词