让前端飞

关于 REACT 的一些笔记

2017-09-06  本文已影响0人  LOWINC

项目地址


part_1: eventListener

window.addEventListener
window.removeEventListener
使得绑定和解绑的是同一个"处理函数(landMore)"

错误写法 1:

    window.addEventListener('scroll',this.landMore,false)
    window.removeEventListener('scroll',this.landMore,false)

问题:

    landMore 内部 this指向出错

现象:

    this.state.XXX = undefined

错误写法 2:

window.addEventListener('scroll',this.landMore.bind(this),false)
window.removeEventListener('scroll',this.landMore.bind(this),false)

问题:

解决了 landMore 内部 this 的指向问题 
但是 使用 foo.bind() 会返回一个新函数 
    add => landMore.bind(this) 
    rm  => landMore.bind(this)
导致 绑定的 landMore 和取绑的 landMore 是两个不同的函数

现象:

    跳转页面后还是会执行 landMore 函数

正确写法:

constructor(){
    super()
    this.landMore = this.landMore.bind(this)
}

实现:

1:指定this
2:add/rm 同一个函数
上一篇 下一篇

猜你喜欢

热点阅读