私は反応ネイティブのアプリを開発しています。私はiOSのマップと似ているこのUI要素を持っています。そこでは、パネルを一番下からスライドし、スクロール可能なリストがあります。Reactネイティブスライドアウトパネルとスクロールビュー
スライドアウトパネルの場合は、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>
その中に、私はreact-native-elements
から<List>
を含む<ScrollView>
を持っています。私の知る限りでは、それがされ、唯一のベントリスナーを持っています
<ScrollView onScroll={()=>{}}></ScrollView>
私の問題は、リスト上でスクロールすると、実際に(それがダウンしてスライドさせて閉じます)閉じるには、パネルを引き起こすことがあります。
state = {
dragPanel: true,
}
/*===========================================*/
<SlidingUpPanel allowDragging={this.state.dragPanel}>
<ScrollView onScroll={()={ this.setState({dragPanel: false}) }}></ScrollView>
</SlidingUpPanel>
しかし、私はドラッグを復元する方法を見つけることができない、それはのように効率的に立ち上げていない:私は状態を追加し、それをonScroll modfiyingことで回避策を見つけました。
TL; DR
は、各重複のイベントなしSlidingUpPanel内部ScrollViewを実装するeficient方法はありますか?おそらくfunction(e){e.preventDefault();}
に類似したものを使用していますか?
お返事ありがとうございます。私が理解しているように、 '_onGrant()'はユーザがスクロールを開始するときに起動され、 '_onRelease()'はスクロールを停止するときに起動されます。そして、 'this._panResponder'はそれに応じてそれらを起動します。しかし、私はそれを ''に実装する必要がありますか? (つまり、プロパティ名などはありません) –
edvilme
@edvilme '{... this._panResponder.panHandlers}'は、あなたが何を記述しているのかを正確に表します。 *小道具を送る* https://zhenyong.github.io/react/docs/transferring-props.html – Val
ありがとうございました。残念ながら、これは問題を解決していないようです。それは私を助けた、私はハンドルにイベントリスナーを追加し、すべてのスクロールイベントでドラッグを拒否しました。ありがとうございました!!! – edvilme