Reactjs React相当于`$(window.scrollTop())`

Reactjs React相当于`$(window.scrollTop())`,reactjs,react-dom,Reactjs,React Dom,我试图检查用户是否已滚动到文档底部。Jquery中有一个流行的答案 如何在React中完成该操作 到目前为止,我发现相当于: $(窗口)。高度为:window.pageYOffset $(document).height为:document.documentElement.offsetHeight 我缺少$(窗口)。scrollTop您对React的期望太高了。React只关心向DOM呈现数据。你不喜欢使用纯JS 示例 const{useState,useffect}=React; 常量应

我试图检查用户是否已滚动到文档底部。Jquery中有一个流行的答案

如何在React中完成该操作

到目前为止,我发现相当于:

  • $(窗口)。高度为:
    window.pageYOffset
  • $(document).height
    为:
    document.documentElement.offsetHeight

我缺少
$(窗口)。scrollTop

您对React的期望太高了。React只关心向DOM呈现数据。你不喜欢使用纯JS

示例

const{useState,useffect}=React;
常量应用=()=>{
useffect(()=>{
$(窗口).scrollTop($(文档).height());
}, [])
返回
}
ReactDOM.render(
,
document.getElementById('root'))
);

窗口对象中有一个新的API。这里的示例用于滚动到顶部。你也可以在底部做。而不是顶部作为底部

顶部:

底部:

window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' })
在javascript中检查页面底部

window.onscroll = function() {
  var d = document.documentElement;
  var offset = d.scrollTop + window.innerHeight;
  var height = d.offsetHeight;

  console.log('offset = ' + offset);
  console.log('height = ' + height);

  if (offset >= height) {
    console.log('At the bottom');
  }
};
与反应挂钩组合使用

遵循以下条款和代码参考: 1.
2.

您希望检查用户是否已使用React/JS滚动到文档底部

给你

代码片段

导出默认函数App(){
const[isPageEnd,setIsPageEnd]=useState(false);
useffect(()=>{
文档。添加的文本列表器(“滚动”,跟踪滚动);
return()=>document.removeEventListener(“滚动”,trackScrolling);
}, []);
常量跟踪滚动=()=>{
if(window.innerHeight+window.scrollY>=document.body.offsetHeight){
setIsPageEnd(真);
}
if(false){
控制台日志(“到达底部”);
document.removeEventListener(“滚动”,跟踪滚动);
}
};
返回(
你好,代码沙盒
{isPageEnd(
您已到达页面底部。请刷新页面并重新开始

) : ( Lorem ipsum,或者有时称为lipsum,是在 排版印刷品、平面或网页设计。这篇文章是由于 15世纪的一个不知名的排字工,被认为有 西塞罗的De Finibus Bonorum et Malorum的搅乱部分,用于 类型样本书Lorem ipsum,或者有时称为lipsum,是 用于排版印刷品、图形或网页设计的虚拟文本 这段文字被认为是15世纪一位不知名的排字工人写的 被认为是扰乱了西塞罗的德菲尼布斯·博诺拉姆等人的部分作品 Malorum用于类型样本书Lorem ipsum或lipsum 有时是已知的,是否在排版印刷品、图形或图形时使用虚拟文本 网页设计。这篇文章的作者是一位不知名的美国排字师 15世纪,被认为是谁扰乱了西塞罗的部分德 类型样本书Lorem中使用的Finibus Bonorum和Malorum ipsum,或者有时称为lipsum,是在 排版印刷品、平面或网页设计。这篇文章是由于 15世纪的一个不知名的排字工,被认为有 西塞罗的De Finibus Bonorum et Malorum的搅乱部分,用于 类型样本书Lorem ipsum,或者有时称为lipsum,是 用于排版印刷品、图形或网页设计的虚拟文本 这段文字被认为是15世纪一位不知名的排字工人写的 被认为是扰乱了西塞罗的德菲尼布斯·博诺拉姆等人的部分作品 用于类型样本簿的马洛伦

)} ); }
这可能适合您。为此,可以使用React-SyntheticEvent

class SomeComponent extends React.Component {
   findBottomScroll = e => {
     let element = e.target
     if (element.scrollHeight - element.scrollTop === element.clientHeight) {
       // whatever you want
   }
}
render() {
  return (
    <div onScroll={this.handleScroll}></div>
  )
}
类SomeComponent扩展React.Component{
findBottomScroll=e=>{
设元素=e.target
if(element.scrollHeight-element.scrollTop===element.clientHeight){
//随便你
}
}
render(){
返回(
)
}

}

如果方便的话,我更喜欢使用浏览器的API。在本例中,Jquery是一个不必要的依赖项。无论如何,谢谢。
class SomeComponent extends React.Component {
   findBottomScroll = e => {
     let element = e.target
     if (element.scrollHeight - element.scrollTop === element.clientHeight) {
       // whatever you want
   }
}
render() {
  return (
    <div onScroll={this.handleScroll}></div>
  )
}