gpt4 book ai didi

javascript - 使用 Javascript 和 React 检测 DIV 中的滚动位置

转载 作者:行者123 更新时间:2023-11-28 19:10:58 25 4
gpt4 key购买 nike

this.state = {
page: 1
}

onScroll = () =>{
let elem = document.getElementById("longTable");
let loading = true // this can change depening on if an api call is in progress
if ((elem.offsetHeight + elem.scrollTop) >= elem.offsetHeight - 10 &&!loading ) {
this.setState(prevState => ({ page: prevState.page + 1 }), () =>
console.log("Now You can Scroll")
// this.props.onLoadMore(this.state.page)
)
}else{
// debugger;
console.log("finally--- no more api calls")
}
}
<div
className={"long-table"}
id={"longTable"}
onScroll={this.onScroll}
style={{ width: "-webkit-fill-available" }}
>
</div>;
.long-table {
overflow-y: auto;
height: 600px;
}

这就是我所做的,但即使我向上或向下滚动,它也会继续调用 api..

我如何检测该 div 中的滚动,以便向上滚动不会进行 api 调用,但向下滚动只会进行 api 调用当达到一定的高度时,我不能一直低头并一直在进行 api 调用..

请帮忙

最佳答案

似乎 DOM 没有提供一种内置的方式来区分向下滚动和向上滚动事件。

所以,唯一的办法就是存储之前的滚动位置,然后将它与新的滚动位置进行比较,就可以知道是向上滚动还是向下滚动。

此外,在 React 中,最好的方法应该是将这样的值直接存储为属性:

class MyComponent extends Component {
constructor(props) {
super(props)
this.lastScrollTopPosition = 0
}

onScroll() {
/* ... */
}
}

可以引用this查看如何比较之前和当前的滚动位置。

关于javascript - 使用 Javascript 和 React 检测 DIV 中的滚动位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59320613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com