この画面があるとしましょう:
ユーザーが白いツールチップをクリックすると、別の画面にリダイレクトされます。ときどきアプリが少し遅くなり、ツールチップをクリックして画面が変化するのを確認するのに約 2 秒かかります。問題は、これらの 2 秒間に、ユーザーがこのツールチップをもう一度タップして実行することです。
結果として得られるのは、StackNavigator に新しい画面のインスタンスが 2 つあるということです。つまり、新しい画面が表示されますが、[戻る] をクリックすると、この [ヒッチハイク マップ] 画面には戻りませんが、同じ画面の別のインスタンスに戻ります。
この 2 秒間にコールアウトを 5 回クリックした場合、マップ画面に戻るには [戻る] を 5 回クリックする必要があります。それを防ぐ方法はありますか?インスタンスを 1 つだけ StackNavigator に入れるには?
私はReact Navigation、より正確にはStackNavigatorを使用しています。これが私のコードです:
「ツールチップをクリック」部分:
<MapView.Marker
onCalloutPress={() => this.props.navigation.navigate('spotDetails', { spotId: marker.id })}
/>
私の画面:
const HMapNavigator = StackNavigator({
HMap: { screen: HMapViewContainer },
spotDetails: { screen: SpotDetailsViewContainer },
});