Обновление
Изменено использование 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})
});