一个react定时器问题向大家请教

如下代码为什么run方法没有执行?

run() {
        // const initT = 3000,
        //     scrollNum = Math.ceil(this.props.listarr.length / 6);
            console.log('do');
            this.setState((prevState) => {
                moveNum: prevState.moveNum + 90
            });
    }


    componentDidMount() {
        const inter = (run) => {setInterval(run,1000)};  //这里如果不用个函数包裹起来会报找不到run
        inter();
    }

感谢大家的及时帮忙解答,看了你们的答案我才意识到箭头函数不会绑定this,所以要加this,非常感谢~

阅读 3.3k
5 个回答
const inter = (run) => {setInterval(run,1000)};
inter(this.run);
这样试试?

你把{setInterval(run,1000)}改成{setInterval(this.run,1000)}

还是老问题,this指向问题

const inter = setInterval(()=>{this.run();},1000);
const inter = setInterval(this.run.bind(this),1000);

你这是失去作用域了(this),所以有箭头函数可以

//你如果传参

const inter = (run) => {setInterval(run,1000)}; 
inter(this.run)  

//不传参

const inter = () => {setInterval(this.run,1000)}; 
inter()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题