Чтобы иметь возможность перемещаться в любом месте, сохраните ссылку на NavigationContainer
.
Пример: я создал NavigationService
как показано ниже:
import { CommonActions, StackActions } from "@react-navigation/native";// react navigation 5
import { NavigationActions, StackActions } from "react-navigation"; // react navigation 4
export default class NavigationService {
// core navigator
private static navigator;
// sets the core navigator
static setTopLevelNavigator(navigatorRef) {
NavigationService.navigator = navigatorRef;
}
// naviget to a route
static navigate(name, params?) {
NavigationService.navigator.dispatch(CommonActions.navigate({ name, params }));
}
static goBack() {
return NavigationService.navigator.dispatch(CommonActions.goBack());
}
static popToTop() {
NavigationService.navigator.dispatch(StackActions.popToTop())
}
}
И в вашем приложении. js:
<NavigationContainer ref={(ref) => NavigationService.setTopLevelNavigator(ref)}>
//
</NavigationContainer>
Теперь NavigationService
имеет ссылку на NavigationContainer
, поэтому вы можете перемещаться куда угодно, выполнив:
NavigationService.navigate("SomeScreen");
Если вы используете реагирующую навигацию 4 замените CommonActions
на NavigationActions
.