ex-navigation
の開発者の助けを借りて、私はナビゲート時にタブスタックをクリアする方法を見つけました。 onPress
ハンドラをTabNavigation
コンポーネントにアタッチすると、デフォルトのイベントハンドラが渡されます。タブを変更するデフォルトのハンドラを呼び出した後、他の任意のアクションを実行できます。我々はstacks("first")
を通じて操作するスタックは"first"
にid
とnavigatorUID
セットの両方を持っている必要があることを
export default class RootNavigation extends React.Component {
constructor(props) {
super(props);
this.onPress = this.onPress.bind(this);
}
onPress(switchTab) {
switchTab();
requestIdleCallback(() => {
this.props.navigation.performAction(({stacks}) => {
stacks("first").popToTop();
});
});
}
render() {
return (
<View>
<TabNavigation initialTab="first">
<TabNavigationItem id="first-tab" onPress={this.onPress}>
<StackNavigation id="first" navigatorUID="first" initialRoute="first-route" />
</TabNavigationItem>
<TabNavigationItem id="second-tab" onPress={this.onPress}>
<StackNavigation id="second" navigatorUID="second" initialRoute="second-route" />
</TabNavigationItem>
<TabNavigationItem id="third-tab" onPress={this.onPress}>
<StackNavigation id="third" navigatorUID="third" initialRoute="third-route" />
</TabNavigationItem>
</TabNavigation>
</View>
);
}
};
注:ここでは、ユーザが任意のタブをクリックすると、最初のタブのスタックをクリアしTabNavigationのバージョンがあります。