项目地址
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 同一个函数
网友评论