react.js中如何实现tab吸顶效果
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要介绍"react.js中如何实现tab吸顶效果"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"react.js中如何实现tab吸顶效果"文章能帮助大
千家信息网最后更新 2025年01月23日react.js中如何实现tab吸顶效果
这篇文章主要介绍"react.js中如何实现tab吸顶效果"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"react.js中如何实现tab吸顶效果"文章能帮助大家解决问题。
在react项目开发中有一个需求是,页面滚动到tab所在位置时,tab要固定在顶部。
实现的思路其实很简单,就是判断当滚动距离scrollTop大于tab距离页面顶部距离offsetTop时,将tab的position变为fixed。
在react中,我在state中设置一个navTop属性,切换这个属性的值为true或者false,然后tab标签使用classnames()这个方法来利用navTop的值添加类名fixed。
一开始我是这样写的:
import cs from 'classnames';class FixedTab extends React.Component{ constructor(props){ super(props); this.state = { navTop: false } this.$tab = null; this.offsetTop = 0; } componentDidMount(){ this.$tab = this.refs.tab; if(this.$tab){ this.offsetTop = this.$tab.offsetTop; window.addEventListener('scroll',this.handleScroll); } } handleScroll(){ let sTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop; if(sTop >= this.offsetTop){ this.setState({ navTop: true }) } if(sTop < this.offsetTop){ this.setState({ navTop:false }) } } render(){ return( ) } }
然后我发现这样写有问题,当我滚动条滚动距离达到条件时,tab是出现了吸顶的效果,但一瞬间又恢复了,滚动条也回弹了,一直无法继续下拉。
我一开始以为判断逻辑有问题,但一直找不到解决的办法,后来我怀疑是state值改变的时间差导致的,好像陷入了一个死循环,然后我就在判断滚动距离之前加了一个判断navTop的状态。
修改的主要代码如下:
handleScroll(){ let sTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop; if(!this.state.navTop && sTop >= this.offsetTop){ this.setState({ navTop: true }) } if(sTop < this.offsetTop){ this.setState({ navTop:false }) } }
这样修改之后吸顶效果就正常了。
我认为就是setState方法导致的问题,setState本身是一个异步的方法,它还有一个参数是回调函数。
关于"react.js中如何实现tab吸顶效果"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
效果
吸顶
方法
问题
知识
就是
属性
行业
页面
顶部
不同
实用
代码
位置
内容
函数
办法
参数
实用性
实际
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
工厂网络技术方案
济南市联想服务器总代理公司
登录窗体连数据库sql
自学网络安全操作
辽宁采购管理软件开发公司
宁德网络安全培训学校
上海量化软件开发公司
东莞团贷互联网科技有限公司
岗前培训软件开发费用
软件开发场地要求
重庆公安网络安全岗
数据库服务器怎么转移
税务 网络安全管理办法
软件开发需要怎么做什么
服务器管理岗职责要求
无极数据库编辑器4.2
软件开发专业哪家靠谱
知识管理服务器
lol比赛服务器
计算机网络安全防控措施
测绘数据库管理流程图
合肥网络技术学院
全球网络安全专家
网络安全指什么收到保护
网络安全省察办法啥时候开始实施
服务器只通过域名连接
条码设计数据库详情设计
网络安全法有无根本性修改
网络安全法国际互联网
软件开发收入