Android ONEDREACHEDTHRESHOLD在英语中的真正含义是什么

Android ONEDREACHEDTHRESHOLD在英语中的真正含义是什么,android,listview,react-native,Android,Listview,React Native,: ONEDREACHEDTHRESHOLD数 调用onEndReached的阈值(虚拟,非物理)。 所以我只是想知道它是什么意思,是从顶部开始的,还是从底部开始的 从顶部开始如果我将值设置为onEndReachedThreshold={10},那么当我滚动到10像素时,是否立即调用onEndReached,或者其他什么 从底层开始如果我设置了onEndReachedThreshold={listview height-10}的值,我的onEndReached是否会在滚动到10像素或其他值时立即

:

ONEDREACHEDTHRESHOLD数

调用onEndReached的阈值(虚拟,非物理)。 所以我只是想知道它是什么意思,是从顶部开始的,还是从底部开始的

从顶部开始如果我将值设置为onEndReachedThreshold={10},那么当我滚动到10像素时,是否立即调用onEndReached,或者其他什么

从底层开始如果我设置了onEndReachedThreshold={listview height-10}的值,我的onEndReached是否会在滚动到10像素或其他值时立即调用。

这始终是最好的方法:

onEndReached函数
当所有行都已呈现且列表已滚动到底部的onEndReachedThreshold内时调用。提供了本机滚动事件

onEndReachedThreshold number
调用onEndReached的阈值(以像素为单位)(虚拟,非物理)

在我看来:
如果使用
onEndReachedThreshold={10}
而不是
ListView
使用
FlatList
而不是
ListView时,如果从底部滚动到10个像素,则会调用
onEndReached
,请注意参数单位已更改

对于
ListView
来说,它从底部开始以像素为单位,但根据,它在列表项中是从底部开始的长度单位

列表的底部边缘必须离内容的末尾多远(以列表的可见长度为单位),才能触发OnedCached回调。因此,当内容的结尾在列表可见长度的一半以内时,值为0.5将触发ONEDREACHED


因此,如果您希望在用户处于当前数据集的一半时更新列表,请将该值设置为
0.5

,这是根据源代码的工作方式:

const {contentLength, visibleLength, offset} = this._scrollMetrics;
const distanceFromEnd = contentLength - visibleLength - offset;
if (
  onEndReached &&
  this.state.last === getItemCount(data) - 1 &&
  distanceFromEnd < onEndReachedThreshold * visibleLength &&
  (this._hasDataChangedSinceEndReached ||
    this._scrollMetrics.contentLength !== this._sentEndForContentLength)
) {
  // Only call onEndReached once for a given dataset + content length.
  this._hasDataChangedSinceEndReached = false;
  this._sentEndForContentLength = this._scrollMetrics.contentLength;
  onEndReached({distanceFromEnd});
}
const{contentLength,visibleLength,offset}=这个;
const distanceFromEnd=contentLength-visibleLength-偏移量;
如果(
单面搜索&&
this.state.last==getItemCount(数据)-1&&
距离距离末端
因此,首先,它检查onEndReached回调(如果存在),然后检查最后一个数据元素是否呈现(不一定可见),然后才检查是否滚动到列表的底部

visibleLength这里是列表元素的高度(如果未设置水平),contentLength是列表元素容器的高度乘以数据中的元素数。
正如您所看到的,onEndReachedThreshold是“可见屏幕”(即列表元素的高度)的数量,您应该滚动直到您的onEndReached回调将触发-越大onEndReachedThreshold,滚动越少。如果值onEndReachedThreshold=0.5,回调将在列表的“末尾”触发。但是请记住,在渲染最后一个元素之前,无论您将设置什么值,都不会激发。

在2020年,onEndReachedThreshold表示在激发事件之前应从底部开始的屏幕长度数


我使用onEndReachedThreshold={2}在两个全屏距离时触发onEndReached。

因此,如果有人从顶部滚动10个像素时我必须调用onEndReached,那么我必须设置onEndReachedThreshold={listview的长度-10},对吗?@manjeething不,你必须将其设置为onEndReachedThreshold={10}@曼吉青:我不建议依赖上层的关系。这将很容易以无休止的失败告终loop@ManjeetSingh您应该将此答案设置为正确答案,10表示距离底部10px,依此类推on@fareednamroutionEndReachedThreshold永远不会像我期望的那样表现,但这个答案似乎清楚了文档想要传达什么。Accepted不是“当前数据集”,而是“列表可见长度的一半”。因此,此距离将根据“可见长度”而有所不同“列表的高度。如果列表的长度为20,可见元素的长度为6,那么0.5如何工作?”?当滚动到18个元素时,我如何实现OneDreached的调用?@Ashokdavatwal-如果您的长度为20,并且您将限制设置为0.5,那么当您滚动到第10项时,它将被调用。如果要在18时执行此操作,请将其设置为18/20=0。9@jhm那是不对的。“当内容的结尾在列表可见长度的一半以内时,0.5的值将触发ONEDREACHED。”是关键部分。如果您想在18触发它,那么将
onEndReachedThreadhold
设置为0.9意味着20-(0.9*6)=14.6。当显示第14项或第15项时,它将大致触发一个已访问的
onEndReached
。在18时触发它,数学是:20-18=2。2 / 6 = 0.333. 将其设置为
0.333
onedreached
将围绕第18项调用(即,当大约2项位于可见行下方时)。您好,
visibleLength这里是列表元素的高度
,您的意思是visibleLength是列表中单个项目的高度吗?还是平面列表元素的高度?什么是“列表元素容器”?你是说包装物品的那个吗?例如hello@VidyVideni,你找到你问题的答案了吗?我需要牙齿是2020年的正确答案,我不知道为什么文件没有提到这一点!这就是我一直在寻找的,由于某种原因,文档没有被我理解。这个答案是正确的。谢谢