【发布时间】:2018-05-26 15:48:51
【问题描述】:
我正在开发一个带有本机反应的应用程序。我有这个 UI 元素,它类似于 iOS 中的地图,您可以在其中从底部滑动一个面板,在其中有一个可滚动的列表。
对于滑出式面板,我使用了一个名为 rn-sliding-up-panel 的组件。它有几个道具作为事件监听器。例如
<SlidingUpPanel
allowDragging={/*Boolean*/}
onDragStart={()=>{} /*When it is about to be dragged*/}
onDrag={()=>{} /*When it is being dragged*/}
onDragEnd={()={} /*When the user is no longer touching the screen*/}
></SlidingUpPanel>
在其中,我有一个<ScrollView>,其中包含来自react-native-elements 的<List>。据我所知,它只有一个发泄监听器,即:
<ScrollView onScroll={()=>{}}></ScrollView>
我的问题是,在列表上滚动实际上会导致面板关闭(它通过向下滑动关闭)。我通过添加一个状态并在滚动上对其进行修改找到了解决方法:
state = {
dragPanel: true,
}
/*===========================================*/
<SlidingUpPanel allowDragging={this.state.dragPanel}>
<ScrollView onScroll={()={ this.setState({dragPanel: false}) }}></ScrollView>
</SlidingUpPanel>
但是,我找不到恢复拖动的方法,而且启动效率也不高。
TL;DR
是否有一种有效的方法可以在 SlidingUpPanel 中实现 ScrollView 而不会发生每个重叠的事件?也许使用类似于function(e){e.preventDefault();} 的东西?
【问题讨论】:
标签: javascript reactjs user-interface react-native