在屏幕上,我有两个ListViews,leftListView和rightListView,当我滑动rightListView时设置leftListView的contentOffset,以保持contentOffset在同一级别。但是leftListView的效果非常延迟!
您可以运行我的演示来体验效果
github上:github link
onScroll(){
if (this.state.loaded) {
var rightList = this.refs[RIGHT_LISTVIEW];
var leftList = this.refs[LEFT_LISTVIEW];
var y1 = leftList.scrollProperties.offset;
rightList.setNativeProps({
contentOffset : {x: 0, y: y1}
});
}
},
答案 0 :(得分:1)
根据您的存储库的快速浏览,看起来您的应用程序仅适用于iOS。如果是这种情况,您可能想尝试调整最左侧ListView的scrollEventThrottle
道具。
ScrollView文档说明onScroll
。
onScroll功能
滚动期间每帧最多触发一次。可以使用scrollEventThrottle prop
控制事件的频率
这是scrollEventThrottle
:
scrollEventThrottle数字
它控制滚动时滚动事件的频率(以每秒事件数为单位)。数字越大,跟踪滚动位置的代码的准确度越高,但由于通过网桥发送的信息量,可能导致滚动性能问题。默认值为零,这意味着滚动事件将在每次滚动视图时仅发送一次。
ScrollView
属性可以直接传递给ListView
,继承自ScrollView
。
尝试的好数字可能是scrollEventThrottle={16}
,大约是60fps。这可能会或可能不会产生您想要的效果。
您可能尝试的另一个优化方法是使用Animated.event
将最右边的ListView
contentOffset.y
的值绑定到最左边的{Content}的valueOffset值,也许可以卸载一些重的提升到本机执行端,而不是在JavaScript和本机代码之间来回编组事件。但实施起来可能有点复杂,但请查看Animated文档,了解如何开始使用。