gpt4 book ai didi

javascript - 在react中使用setTimeout进行轮询

转载 作者:行者123 更新时间:2023-12-01 01:52:07 25 4
gpt4 key购买 nike

为什么这段代码,它只 console.log 'do stuff' 两次?

class Something extends React.Component {
componentDidMount() {
this.doStuff();
}

doStuff() {
console.log('do stuff')
setTimeout(this.doStuff, 3000);
}

render() {
return null
}
}

最佳答案

第一次超时后,this将是window对象,而你没有 doStuff window上的方法对象,因此不会再次运行。

你可以例如使 doStuff函数转换为箭头函数,该函数将具有 this相反,封闭的词汇上下文的值。

class Something extends React.Component {
componentDidMount() {
this.doStuff();
}

doStuff = () => {
console.log('do stuff');
setTimeout(this.doStuff, 1000);
}

render() {
return null;
}
}

ReactDOM.render(<Something />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>

关于javascript - 在react中使用setTimeout进行轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51391050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com