LoginSignup
6
9

More than 3 years have passed since last update.

React Navigation Stackをリセットする

Last updated at Posted at 2020-05-28

Stackをリセットする

Stack Navigatorを使っているとStackがどんどん溜まっていき重くなっていきます。
そこでStackをリセットするには navigation.dispatchStackActions.reset を使います。

StackActions,NavigationActionsのインポート

import { StackActions, NavigationActions } from 'react-navigation'

resetアクションをdispatch

const resetAction = StackActions.reset({
              index: 0,
              actions: [
                //routeNameはリセットした時の初期スクリーンの名前
                NavigationActions.navigate({ routeName: 'Home' })
              ],
            });
            navigation.dispatch(resetAction);
});

活用例

Navigatorは実際使う時には複数使うことがほとんどだと思います。今回はTabNavigatorの中でStackNavigatorを使っている場合を考えます。Tab遷移をする際にStackをリセットしてからタブを移動してみましょう。

-TabNavigator
 -Home              <--遷移先
 -StackNavigator
   -PlanList
   -PlanDetail     <--現在地

上のような構成で単純に
navigation.navigate('Home')とするとHomeには移動できますがTabNavigatorでStackNavigatorに来た時にStackがリセットされていないためPlanDetailに来てしまいます。そのため遷移する際にStackをリセットしてから移動してみましょう

const resetAction = StackActions.reset({
    index: 0,
    actions: [
    NavigationActions.navigate({ routeName: 'PlanList' })
    ],
});
navigation.dispatch(resetAction);
navigation.navigate('Home');

そのままですね。自分のメモなので許してください。

6
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9