Белый экран смерти при переходе от самого внутреннего экрана к внешнему стеку - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть стековый навигатор, содержащий навигатор со вкладками, который содержит навигатор по стекам. С самого внутреннего экрана стека я пытаюсь перейти к экрану во внешнем стеке. Экран самого внутреннего стека отключается, но экран внешнего стека не монтируется и застревает на белом экране смерти.

Я уже попробовал записать результат и ничего там не увидел.

My App.js

const profileNavigator = createStackNavigator(
  {
    Account: {
      screen: Accountscreen
    },
    Support: {
    screen: Supportscreen
    },
  },
);

const feedNavigator = createStackNavigator(
  {
    Feed: {
      screen: Feedscreen
    },
  },
);

const chatNavigator = createStackNavigator(
  {
    chatnews: {
      screen: chatnews
    },

  },

);

const Tabscreen = createMaterialTopTabNavigator(
  {
    Profile: {
      screen: profileNavigator,
    },
    Feed: {
      screen: feedNavigator,      
    },
    Chat: {
      screen: chatNavigator,
    }
  },
);

const AppNavigator = createStackNavigator(
  {
    LoginCheck: {
      screen: LoginCheckScreen
    },
    Login: {
      screen: Loginscreen
    },
    Tabscreen: {
      screen: Tabscreen
    }
  },
  }
);

Мой код в коде экрана выхода из системы:

NavigationService.navigate("LoginCheck");

Код Навигационной службы

import { NavigationActions } from 'react-navigation';
let _navigator;

function setTopLevelNavigator(navigatorRef) {
    _navigator = navigatorRef;
}

function navigate(routeName, params) {
    _navigator.dispatch(
        NavigationActions.navigate({
            type: NavigationActions.NAVIGATE,
            routeName,
            params,
        })
    );
}

export default {
    navigate,
    setTopLevelNavigator,
};

Я ожидал перейти на экран LoginCheck, но вместо этого он размонтирует экран учетной записи, но зависает на белом экране смерти.

1 Ответ

0 голосов
/ 02 апреля 2019

Использовали ли вы переключатель навигатора?

Изменить на следующее.

импортировать заголовки

import {
  ...
  ...
  createAppContainer,
  createStackNavigator,
  createSwitchNavigator,
} from "react-navigation";

обновить код

const profileNavigator = createStackNavigator(
  {
    Account: {
      screen: Accountscreen
    },
    Support: {
    screen: Supportscreen
    },
  },
);

const feedNavigator = createStackNavigator(
  {
    Feed: {
      screen: Feedscreen
    },
  },
);

const chatNavigator = createStackNavigator(
  {
    chatnews: {
      screen: chatnews
    },

  },

);

const Tabscreen = createMaterialTopTabNavigator(
  {
    Profile: {
      screen: profileNavigator,
    },
    Feed: {
      screen: feedNavigator,      
    },
    Chat: {
      screen: chatNavigator,
    }
  },
);

const AppNavigator = createSwitchNavigator(
  {
    LoginCheck: LoginCheckScreen,
    Login: Loginscreen,
    Tabscreen: Tabscreen
  },
  { headerMode: "none", initialRouteName: "PreLoader" }
);

const App = createAppContainer(AppNavigator);

export default App; //finally export App

Если вы хотите перейти на экран входа в систему, используйте следующий код при нажатии кнопки или что-то еще.

this.props.navigation.navigate("LoginCheck");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...