千家信息网

react.js中如何实现tab吸顶效果

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"react.js中如何实现tab吸顶效果"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"react.js中如何实现tab吸顶效果"文章能帮助大
千家信息网最后更新 2026年10月31日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安全错误 数据库的锁怎样保障安全 喔噻互联网科技有限公司 广州淘业互联网络科技 疫情对互联网科技公司影响 互联网科技卖菜 互联网金融 金融科技 美国互联网前沿科技 上海电发互联网科技有限公司 世界互联网科技公司市值排名 河南猎农互联网科技有限公司 米聚互联网科技南京有限公司排面 长沙茂晟互联网科技有限公司 科技大学互联网 伍佰万互联网科技怎么赚钱 领航科技大厦互联网公司 风投北京互联网科技 东营紫格互联网科技 抖集互联网科技技术咨询 青岛易易互联网科技 知域互联网科技有限公司官网 如何强化互联网金融科技 疫情对互联网科技公司影响 上海互联网科技有限公司 广西拼得多互联网科技有限公司 新华互联网科技2019 辽宁互联网新科技 烟台灵鸽互联网科技有限公司 黑科技 体验场景 互联网大会 深圳无忧互联网科技 陕西九四连强互联网科技有限公司 恒生互联网科技趋势
0