Реагировать навигация: навигатор ящика отображается в фоновом режиме - PullRequest
0 голосов
/ 28 апреля 2019

Я использую DrawerNavigator , от 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;

Пример изображения.

An example of this can be seen here.

Ответы [ 3 ]

1 голос
/ 29 апреля 2019

Вы можете использовать следующий код, чтобы закрыть ящик,

Импорт DrawerActions из "act-navigation "

import { DrawerActions } from "react-navigation";
.....

this.props.navigation.dispatch(DrawerActions.closeDrawer());
1 голос
/ 29 апреля 2019

Вы можете закрыть его вручную перед началом чего-либо.

To open and close drawer, use the following helpers to open and close the drawer:

this.props.navigation.openDrawer();
this.props.navigation.closeDrawer();
0 голосов
/ 30 апреля 2019

Ошибка оказалась связана с этой строкой 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.log("HELLo")
    }
    this.setState({ appState: nextAppState });
  };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...