在react-native中将事件添加到ScrollView
时,我注意到事件处理程序未触发,并且该应用最终将在几秒钟后无提示地崩溃。
这是我的处理程序的样子,我所做的只是一个简单的console.log事件记录:
// Does not work:
<FlatList
...
onScrollEndDrag={e => {
console.log(e);
}}
...
/>
我注意到,如果不传递参数,事件处理程序将起作用:
// Works:
<FlatList
...
onScrollEndDrag={e => {
console.log('event');
}}
...
/>
但是我无法访问事件数据。
当我尝试在此处使用console.log
访问事件时,为什么事件处理程序失败?
答案 0 :(得分:1)
我发现了一个explanation on github:
问题可能是事件对象具有循环的或不可序列化的字段。尝试记录event.nativeEvent(这是ViewLayout对象)。
这是由于expo(XDE)通过使用pretty-format对数据进行序列化来实现console.logging以便将数据从设备发送到计算机的原因。
从31版开始,这确实是expo中的一个bug。已在master中修复,但是如果有帮助,我将在此处保留此答案。
解决方案是在e.nativeEvent
行中使用e
而不是console.log
,因为nativeEvent
没有循环引用。>