Я использую новый React Navigation 5
в своем приложении React Native.
Главное меню обрабатывается RootNavigator
, которое является Drawer
. Вход в систему / регистрация обрабатываются AuthNavigation
, который является Stack
.
Я пытаюсь отправить пользователя на экран Home
под RootNavigator
после успешного входа в систему. Другими словами, я пытаюсь отправить пользователя на экран под другим навигатором, введя navigation.navigate('RootNavigator', {screen: 'Home'});
, но получаю сообщение об ошибке:
Действие «НАВИГАЦИЯ» с полезной нагрузкой {" name ":" RootNavigator "} не обрабатывался ни одним навигатором.
У вас есть экран с именем 'RootNavigator'?
Вот как выглядит мой App.js
:
const App = () => {
const [isLoading, setIsLoading] = useState(true);
const [isAuthenticatedUser, setIsAuthenticatedUser] = useState(false);
useEffect( () => {
// Check for valid auth_token here
// If we have valid token, isLoading is set to FALSE and isAuthenticatedUser is set to TRUE
});
return (
<Provider store={store}>
<PaperProvider>
<NavigationContainer>
{
isLoading
? <SplashScreen />
: isAuthenticatedUser ? <RootNavigator /> : <AuthNavigator />
}
</NavigationContainer>
</PaperProvider>
</Provider>
);
};
И вот мой AuthNavigator
, который является Stack
:
import React from 'react';
import { createStackNavigator } from '@react-navigation/stack';
// Components
import Login from '../../login/Login';
const AuthStack = new createStackNavigator();
export const AuthNavigator = () => {
return(
<AuthStack.Navigator>
<AuthStack.Screen name="LoginScreen" component={Login} />
</AuthStack.Navigator>
);
};
А вот RootNavigator
, который Drawer
:
import React from 'react';
import { createDrawerNavigator } from '@react-navigation/drawer';
// Components
import Dashboard from '../../home/Dashboard';
import DrawerContent from './DrawerContent';
import ToDoList from '../../active_lists/to_do_lists/ToDoList';
const MainMenuDrawer = createDrawerNavigator();
export const RootNavigator = () => {
return (
<MainMenuDrawer.Navigator drawerContent={(navigation) => <DrawerContent navigation={navigation} />}>
<MainMenuDrawer.Screen name="Home" component={Dashboard} />
<MainMenuDrawer.Screen name="To Do List" component={ToDoList} />
</MainMenuDrawer.Navigator>
);
};
Есть идеи, что я здесь делаю не так? Я хочу использовать самый чистый подход для решения этой проблемы.