美文网首页
ReactJS setInterval bind (this)

ReactJS setInterval bind (this)

作者: silly鸿 | 来源:发表于2017-12-27 11:31 被阅读0次

对于ReactJS生命周期中,第一次渲染React.render()调用时,会触发componentDidMount(),组件会生成对应的DOM结构。下面的demo中通过componentDidMount()方法设置了一个定时器,每隔100毫秒重新设置组件的透明度,并重新渲染
令我不解的是,定时器后面出现了bind(this)

原理

①首先bind就是改变函数运行时的this,请自行查看bind函数
②代码中调用了setInterval(fun, time),其实等同于window.setInterval(fun, time)
③如果没调用bind(this),那么传入setInterval的fun的this 指向是window对象
④给setInterval函数bind(this),这里的this指向就是componentDidMount()中的this,也就是这个react对象,这样才能正确访问this.state,this.setState等

扩展

setInterval和setTimeout的函数内的this指向相同的,都是指向window对象,所以在使用的时候都需要进行链式编程.bind(this),修改this的指向

在React组件内使用jQuery进行Ajax请求的时候,回调函数中的this会指向jQuery对象,同理需要加上.bind(this)

ajax.png

相关文章

  • ReactJS setInterval bind (this)

    对于ReactJS生命周期中,第一次渲染React.render()调用时,会触发componentDidMoun...

  • React中的bind(this)

    为什么在React中有时需要通过bind()绑定this?类似如下: 原因是:在setInterval()中定义的...

  • JS定时器

    定时器 setInterval 与 setTimeout的区别 setInterval setInterval(...

  • 总结3

    1.setTimeout setInterval setInterval 几秒执行一次 setInterval...

  • React 生态系

    ReactJS ReactJS 是 Facebook 推出的 JavaScript 函式库,若以 MVC 框架来看...

  • settimeout()和setInterval()

    settimeout()和setInterval() settimeout() setInterval()里的th...

  • JavaScript setInterval( , );

    JavaScript setInterval(匿名方法 ,时间间隔 ); 例如: setInterval(func...

  • 2019-03-21

    Reactjs javaScript

  • 一、React入门

    官网: 英文官网: https://reactjs.org/[https://reactjs.org/] 中文官网...

  • 定时器

    定时器 setInterval(函数,毫秒); 重复执行 clearIntrval(setInterval(函数...

网友评论

      本文标题:ReactJS setInterval bind (this)

      本文链接:https://www.haomeiwen.com/subject/kzaygxtx.html