我想构建一个横幅,例如当用户滚动到末尾时,它会从头开始显示元素。类似于在滚动视图上显示的圆形视图阵列。
我当前正在使用平面列表。我建立一个数组
flatlist_data = [...data.slice(-6), ...data, ...data.slice(0,6)]
并使用onScroll收听nativeEvent.contentOffset.x
。当滚动位置超出数据视图的限制时,我将flatlist.scrollToOffset
与animated:false
一起使用,以移动到列表内的相应位置。
我刚才所说的话非常糟糕。当用户到达指示的位置时:
// xx indicates the pixel positions occupied by the view x
<-data.slice(-6)-> <-- data --> <-data.slice(0,6)->
44 55 66 77 88 99 00 11 22 33 44 55 66 77 88 99 00 11 22 33 44 55
^
我将他无缝地移回我的数据区域
<-data.slice(-6)-> <-- data --> <-data.slice(0,6)->
44 55 66 77 88 99 00 11 22 33 44 55 66 77 88 99 00 11 22 33 44 55
^
这确实很好,直到用户进行动量滚动并到达我的数据视图区域的边界为止。然后它会延迟一段时间调用scrollToOffset
(因为它必须通过js),并且会发生两件事:
列表似乎向后滑动。
滚动动量被杀死
因此,这并不是我打算做的最佳方法。那我该怎么做这个横幅?