Сбросить историю стека навигации - PullRequest
0 голосов
/ 16 апреля 2020

Обновление

Изменено использование DrawerNavigator в качестве root на данный момент, но все же хотелось бы знать, возможно ли использовать StackNavigator как root, но поведение как tabs или drawers.


Использую реактивавигацию v5.

У меня есть следующие настройки:

<RootStack.Navigator initialRouteName={'SplashNavigator'}>
  <RootStack.Screen name={'SplashNavigator'} component={SplashStackNavigator} options={{headerShown: false}} />
  <RootStack.Screen name={'DrawerNavigator'} component={DrawerNavigator} />
</RootStack.Navigator>

С SplashNavigator Я делаю navigation.navigate('DrawerNavigator', {screen:'Home'})

Однако в заголовке есть кнопка «Назад», которая переходит обратно к экрану spla sh.
Есть ли способ сбросить историю, чтобы она ' Возьмем ли DrawerNavigator в качестве основного навигатора?

Пробовал StackActions.replace в HomeScreen, но каким-то образом он не распознает экран.

const HomeScreen = ({navigation}) => {
  useEffect(() => {
    navigation.dispatch(state => {
      console.log(state);
      return StackActions.replace('Home')
    });
  }, []);
  ...
ExceptionsManager.js:173 The action 'REPLACE' with payload {"name":"Home"} was not handled by any navigator. 

Все же я вижу маршрут в состоянии

  "routeNames": [
    "Home",
    "Promotions"
  ],

Пробовал CommonActions.reset() тоже, но ничего не изменилось.

const HomeScreen = ({navigation}) => {
  useEffect(() => {
    navigation.dispatch(state => {
      console.log(state);
      return CommonActions.reset({...state, key:null})
    });
...