请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

这里感觉好奇怪啊,我的为什么没有显示视频的效果

 const { run: tryLoadMore } = useDebounceFn(
    () => {
      const elem = containerRef.current
      if (elem === null) return
      const domRect = elem.getBoundingClientRect()
      if (domRect === null) return
      console.log(domRect.bottom, document.body.clientHeight)
      if (domRect.bottom <= document.body.clientHeight) {
        console.log('执行加载')
      }
    },
    { wait: 300 }
  )

document.body.clientHeight是整个文档的高度,文档肯定包含containerRef元素
这就导致了domRect.bottom 必定是小于document.body.clientHeight,怎么弄刷新页面都会执行,随便滚动都会执行,因为domRect.bottom 必定是小于document.body.clientHeight,不知道为什么老师的代码可以做到划到底部触发事件

正在回答 回答被采纳积分+3

1回答

双越 2023-10-10 08:20:08

你看看一开始 elem 的 height 是多少,和 body.clientHeight 哪个大

0 回复 有任何疑惑可以回复我~
  • 提问者 Valar丶Morghulis #1
    elem 的 height 是19px,body.clientHeight是1393px。
    回复 有任何疑惑可以回复我~ 2023-10-10 22:42:42
  • 提问者 Valar丶Morghulis #2
    比对了两遍的代码找到问题原因了。吐了。
    我的代码没有入引入import 'antd/dist/reset.css' 
    html, body{height:100%}
    应该就是受上面这个height:100%影响的。
    有height:100% 刷新页面document.body.clientHeight的值是当前文档的高度,此时div都没渲染出来也就是不带滚动条的高度。
    回复 有任何疑惑可以回复我~ 2023-10-10 23:27:28
  • 提问者 Valar丶Morghulis #3
    useDebounceFn 感觉有闭包陷阱,滚动后再次调用document.body.clientHeight这个值其实还是第一次进来的值,正常应该是整个文档的高度带上滚动条的。
    回复 有任何疑惑可以回复我~ 2023-10-10 23:30:39
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信