React.Js添加与删除onScroll事件的方法详解


Posted in Javascript onNovember 03, 2017

React简介

React是有Facebook开发出来用于构建前端界面的JS组件库,由于其背后的强大背景,使得这款库在技术开发上完全没有问题。

React的优势

  • 解决大规模项目开发中数据不断变化变得难以操作的问题;
  • 组件化开发,使得开发更加快速;
  • 单向数据流,有利于找到问题;
  • 虚拟DOM,在React内部有一套diff算法可以快速的计算出整体需要改动的位置,从而做到快速局部刷新;举个栗子:删除一个列表再插入个新表,计算后会比较出不同然后插进去;

前言

大家都可能会遇到这样的问题,那就是滚动事件 。比较获取div的滚动事件,在ReactJS想要给div添加一个滚动事件,那基本上是添加不上的(可能是我的能力有限吧,反正我到目前为止,还没有找到可以直接给DIV添加滚动事件的)。

要想实现滚动,那就必须得componentWillMount里注册scroll事件, window.addEventListener(‘scroll', this.onScroll.bind(this)) ,添加事件非常容易的就添加上了。

在componentWillUnmount 里删除 window.removeEventListener(‘scroll', this.onScroll.bind(this)) 

添加容易,删除难,上面那种 remove是删除不了的。在其它页面里,如果你滚动也会触发 onScroll里的事件,此时就会报错,说组件已经卸载,不能进行操作,检查一下代码等等吧。

我想肯定有遇到了,也有解决的办法,果真找到了一篇文章移除 scroll 办法的。

代码如下:

componentDidMount() {
 regScroll(this.handler.bind(this));
 //window.addEventListener('scroll', this.handler.bind(this),false)
}

componentWillUnmount() {
 window.onscroll = '';
 //window.removeEventListener('scroll', this.handler.bind(this),false)
}
 //添加事件监听
function regScroll(myHandler) {
 if (window.onscroll === null) {
 window.onscroll = myHandler
 } else if (typeof window.onscroll === 'function') {
 var oldHandler = window.onscroll;
 window.onscroll = function () {
 myHandler();
 oldHandler();
 }
 }
}
//删除所有事件监听
function removeScrollHandler(){
 window.onscroll=''
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript动态加载二
Aug 22 Javascript
利用js的Node遍历找到repeater的一个字段实例介绍
Apr 25 Javascript
JS+JSP checkBox 全选具体实现
Jan 02 Javascript
js弹出确认是否删除对话框
Mar 27 Javascript
jquery  实现轮播图详解及实例代码
Oct 12 Javascript
Angularjs实现搜索关键字高亮显示效果
Jan 17 Javascript
简单实现js放大镜效果
Jul 24 Javascript
微信小程序 rich-text的使用方法
Aug 04 Javascript
mac中利用NVM管理不同node版本的方法详解
Nov 08 Javascript
Vue中的v-for循环key属性注意事项小结
Aug 12 Javascript
layui使用label标签的方法
Sep 14 Javascript
微信小程序自定义底部弹出框功能
Nov 18 Javascript
基于jQuery解决ios10以上版本缩放问题
Nov 03 #jQuery
nginx配置React静态页面的方法教程
Nov 03 #Javascript
angular中ui calendar的一些使用心得(推荐)
Nov 03 #Javascript
mui上拉加载更多下拉刷新数据的封装过程
Nov 03 #Javascript
基于ES6作用域和解构赋值详解
Nov 03 #Javascript
AngularJS中controller控制器继承的使用方法
Nov 03 #Javascript
vue解决跨域路由冲突问题思路解析
Nov 03 #Javascript
You might like
社区(php&&mysql)一
2006/10/09 PHP
那些年一起学习的PHP(二)
2012/03/21 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
Python字符串匹配算法KMP实例
2015/07/18 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
Windows系统下PhantomJS的安装和基本用法
2018/10/21 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
python温度转换华氏温度实现代码
2020/12/06 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
中英文自我评价语句
2013/12/20 职场文书
物理力学求职信
2014/02/18 职场文书
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
写给老师的感谢信
2015/01/20 职场文书
培养联系人考察意见
2015/06/01 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python