Я использую ЯщикНавигатор из React Navigation. Я заметил, что иногда я вижу Drawer Navigator открытое за некоторыми «представлениями», например, непосредственно перед тем, как я открываю камеру или запрашиваю у пользователя разрешения.
Ниже приведен упрощенный пример (код) моего DrawerNavigator.
Мне было интересно, как я могу скрыть DrawerNavigator на заднем плане.
import { createAppContainer, createDrawerNavigator } from "react-navigation";
import FAQ from "./FAQ";
import Home from "./Home";
const MainNavigator = createDrawerNavigator(
{
Home: {
screen: Home
},
FAQ: {
screen: FAQ
}
}
);
const App = createAppContainer(MainNavigator);
export default App;
Пример изображения.





Вы можете закрыть его вручную, прежде чем начинать что-либо.
To open and close drawer, use the following helpers to open and close the drawer:
this.props.navigation.openDrawer();
this.props.navigation.closeDrawer();
Вы можете использовать следующий код, чтобы закрыть ящик,
Импортируйте DrawerActions из "реагировать-навигация"
import { DrawerActions } from "react-navigation";
.....
this.props.navigation.dispatch(DrawerActions.closeDrawer());
Ошибка оказалась связана с этой строкой this.setState({ appState: nextAppState });. Который устанавливает состояние приложения, то есть, если приложение находится в фокусе или в фоновом режиме. Удаление этой строки, кажется, решает мою проблему с DrawerNavigator.
componentDidMount = async () => {
AppState.addEventListener("change", this.appInFocus);
this.setState({
appState: AppState.currentState
});
};
componentWillUnmount = () => {
AppState.removeEventListener("change", this.appInFocus);
};
appInFocus = async (nextAppState: PossibleAppStates) => {
if (
this.state.appState.match(/inactive|background/) &&
nextAppState === "active"
) {
console.info("HELLo")
}
this.setState({ appState: nextAppState });
};
}
useNativeAnimations: false, у меня работает!