Я создаю приложение, используя React Native, и для навигации использую React Navigation.
Чтобы иметь возможность иметь модальные и регулярные переходы карт для стека, а также меню бургера, у меня есть HomeStack
, вложенное в мой MainStack
, который находится внутри моего MainDrawer
.
Код выглядит так:
const HomeStack = createStackNavigator({...});
const MainStack = createStackNavigator({ HomeStack, ... }, { mode: "modal" });
const MainDrawer = createDrawerNavigator({ MainStack, ... });
Проблема в том, что на страницах моего HomeStack
пользователь должен делать движения, которые часто приводят к случайному открытию ящика. Поэтому я хочу заблокировать ящик для HomeStack
, когда на него были установлены экраны.
Здесь возникает проблема: Документы дают это решение , но в моем случае это не работает, так как стек вложен в другой стек.
// What I tried and what (obviously?) won't work
HomeStack.navigationOptions = ({ navigation }) => {
let drawerLockMode = "unlocked";
if (navigation.state.index > 0) {
drawerLockMode = "locked-closed";
}
return {
drawerLockMode
};
};
MainStack.navigationOptions = ({ navigation }) => {
let drawerLockMode = "unlocked";
if (navigation.state.index > 0) {
drawerLockMode = "locked-closed";
}
return {
drawerLockMode
};
};
Можно ли, например, узнать о состоянии дочернего стека, чтобы я мог использовать аналогичную технику для блокировки ящика?
// Example pseudo code:
MainStack.navigationOptions = ({ navigation }) => {
let drawerLockMode = "unlocked";
if (navigation.state.HomeStack.state.index > 0) { // here!
drawerLockMode = "locked-closed";
}
return {
drawerLockMode
};
};
Как я могу решить эту проблему?