我有几个简单的console.log
中的陈述onScrollBeginDrag
, onScroll
, and onScrollEndDrag
附于一个ScrollView
。我可以看到它们在我的 iOS 设备上按预期工作,但在 Android 模拟器上却无法工作。
这就提出了一个问题,这些 props 仅在 iOS 上支持还是 Android 模拟器有问题?
代码很简单:
onScroll={() => console.log("scroll")}
onScrollBeginDrag={() => console.log("begin")}
onScrollEndDrag={() => console.log("end")}
是的,他们受到支持,但他们有问题......
我假设你使用<FlatList />
渲染你的组件,对吗?
如果是这样,您的问题很可能是由<View />
包含你的<FlatList />
items 被 Android 优化掉。 Android 会自动删除实际上不呈现任何内容的“包装”视图,例如背景颜色或边框。这种优化有助于减少视图层次结构的深度,但在某些情况下可能会导致意外结果(例如这样)...
我添加了一个透明的backgroundColor
到包装<View />
的项目,现在onScrollBeginDrag
, onScrollEndDrag
and onScroll
的事件<FlatList />
正在按预期发射!
<FlatList
onScrollBeginDrag={() => console.log('begin')}
onScrollEndDrag={() => console.log('end')}
onScroll={() => console.log('end')}
data={[{key: 'a'}, {key: 'b'}]}
renderItem={({ item }) => (
<View style={{ backgroundColor: 'transparent' }}>
<Text>{item.key}</Text>
</View>
)}
/>
我还删除了 FlatList 填充,并在包装视图中添加了一些填充,这使得可触摸区域更大。
PS:点赞巴托·卡鲁扎 https://github.com/facebook/react-native/issues/22251#issuecomment-438524264.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)