2017-03-26 46 views
2

比方說,我有這樣的畫面:陣營導航:防止多個實例導航到同一個屏幕

screenshot

當在白色提示用戶點擊,它重定向到另一個屏幕。有時候應用程序會稍微滯後一些,點擊工具提示會花費大約2秒鐘的時間來查看屏幕更改。問題是,在這些2s期間,用戶再次點擊此工具提示上的以使其發生。

而我得到的結果是在我的StackNavigator中有兩個新屏幕實例。我的意思是我看到了我的新屏幕,但是當我點擊「返回」時,我不會返回到這個「搭便車地圖」屏幕,而是返回到同一屏幕的另一個實例。

如果我在這些2秒內點擊了5次標註,那麼我需要點擊5次「返回」返回到地圖屏幕。任何方式來防止呢?只將一個實例放入StackNavigator?

我正在使用React Navigation,更確切地說是一個StackNavigator。這裏是我的代碼:

的「點擊工具提示」部分:

<MapView.Marker 
    onCalloutPress={() => this.props.navigation.navigate('spotDetails', { spotId: marker.id })} 
/> 

我的屏幕:

const HMapNavigator = StackNavigator({ 
    HMap: { screen: HMapViewContainer }, 
    spotDetails: { screen: SpotDetailsViewContainer }, 
}); 

回答

4

多個導航的問題已經被報告並沒有詳細here

react-navigation(v1.0.0-beta.7)處於測試階段,仍在構建中,所以在實現此功能之前,您必須手動處理去抖動。

選項

  • 一旦導航在onPress邏輯或在動作開始
  • 去抖動如果使用的是終極版

lodash提供了有用的反跳效用禁用按鈕,如果你正在尋找一個。