tua-body-scroll-lock踩坑记录

在日常工作中,我们经常会遇到拉起弹窗时要禁止页面的滚动,此时tua-body-scroll-lock库就是一个很好的选择。但是最近在维护老项目的时候发现这个项目会监听滚动事件,当滚到到某个地方时就会给标题栏一个底色,如下面代码

javascript 复制代码
      window.addEventListener('scroll', () => {
        if (window.scrollY >= 30) {
          setScroll(1)
        } else {
          setScroll(0)
        }
      }, false)

但是在滑动过程中如果调用lock方法,此时window.scrollY会变为0,会导致标题栏的底色消失,这样的体验很不佳,用户可能会认为有bug。解决方法也很简单,在调用lock时存一个变量,当scroll事件回调发现这个变量为true时也认为此时页面已经滚动了,如下面代码

javascript 复制代码
//调用lock的逻辑
  useEffect(() => {
      if(defaultLock) {
        lock();
        lockRef.current = true;
        window.lock = true;
      }
  }, [])


//监听事件也需要修改下
window.addEventListener('scroll', () => {
  //弹窗打开时会调用lock方法,此时window.scrollY会变为0,所以在弹窗打开时特殊处理下
  if (window.scrollY >= myCoinHeight || window.lock) {
     setMyCoinStatus(1)
   } else {
     setMyCoinStatus(0)
   }
  }, false)

这样处理后就可以避免上面提到的情况了

相关推荐
其实防守也摸鱼12 小时前
前端应用的离线暂停更新策略:构建稳定可靠的渐进式部署方案
服务器·前端·数据库·学习·ai·命令行·linux系统
太平洋月光12 小时前
Antv G2中自定义技巧📊
前端·数据可视化
shmily麻瓜小菜鸡12 小时前
前端“伪防盗链”方案
前端·javascript·vue.js·bootstrap·echarts
mayaairi12 小时前
JS数组完全指南(含十大操作详解)
开发语言·前端·javascript
IT_陈寒12 小时前
Python的线程池把我CPU跑满了,原来少传了个参数
前端·人工智能·后端
喜欢的名字被抢了12 小时前
写-Chrome-扩展时踩过的那些-MV3-的坑
前端·chrome
网安老伯13 小时前
网络安全基础要点知识介绍(非常详细),零基础入门到精通,看这一篇就够了
运维·前端·网络协议·web安全·网络安全·职场和发展
AndyHeee13 小时前
Linux 内核底层机制:设备树(Device Tree)的数据结构与内存组织
linux·前端·数据结构
wuqingshun31415913 小时前
springBoot是如何通过main方法启动web项目的?
前端·spring boot·后端
xxwl58513 小时前
HTML 小总结:从骨架到枝叶,系统掌握网页结构
前端·html