Объект navigation
содержит необходимые данные, так как он содержит состояние навигации до перехода на новую вкладку.Это состояние навигации имеет как экран, с которого вы осуществляете навигацию, так и его параметры.
Чтобы получить состояние, вы можете использовать следующую функцию:
function getCurrentRoute(navState) {
if (!navState) {
return null;
}
const route = navState.routes[navState.index];
if (route.routes) {
return getCurrentRoute(route); // nested routes
} else {
return {
name: route.routeName,
params: { ...route.params }
};
}
}
Так что теперь вы можете использоватьэта функция внутри обработчика onPress.Примерно так:
navigationOptions: {
tabBarOnPress: ({ navigation, defaultHandler }) => {
const currentRoute = getCurrentRoute(navigation.state);
if (currentRoute.name !== 'Home' || !currentRoute.params.isNavigationDisabled) {
defaultHandler();
}
}
}
Конечно, это означает, что вам нужно управлять параметром навигации с именем isNavigationDisabled
на главном экране, используя метод this.props.navigation.setParams
.
Также,Я надеюсь, что я правильно с отображаемым именем, если не просто отладить его.