[英]React Native ScrollView prevent/allow scrolling on scroll start event
我有一個 ScrollView (實際上是Animated.ScrollView
),我想根據內部組件的某些狀態來決定是否允許在滾動開始時垂直滾動。 我知道有一個scrollEnabled
屬性可以工作,但是滾動視圖包含一些組件,這些組件可以渲染幾幀,並且基於內部視圖的交互更改scrollEnabled
屬性會導致重新渲染,這會丟失一些幀,並且由於我的應用需要根據內部視圖的一些動畫/平滑滾動來更改此屬性,這些丟幀會導致負面的用戶體驗。
我也嘗試了滾動開始拖動事件的preventDefault
但沒有任何改變(無論我是否調用它,它都允許滾動)。
我如何決定是否允許在滾動開始時動態滾動滾動視圖而無需狀態/道具更新(這會導致重新渲染昂貴的視圖樹,丟幀)? 像 pan 響應者的onMoveShouldSetPanResponder[Capture]
事件可能會有很大幫助,但從它們返回false
是行不通的(即使它們被調用,它也會捕獲和滾動)。 (我在 React Native 0.64 上)
在閱讀https://codedaily.io/courses/Master-React-Native-Animations/Using-and-Understanding-setNativeProps中的帖子后,我通過在滾動視圖上設置本機道具(我直接使用ref
)來解決它更新 state,防止重新渲染:
this.state.scrollView.current?.setNativeProps({
scrollEnabled: false
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.