React-Native: запуск условного приложения в wix / Reaction-native-navigation - v1 - PullRequest
0 голосов
/ 17 апреля 2019

Я использую wix / react-native-navigation - v1 в моем собственном реактивном проекте, и я хочу запустить свое приложение на основе следующего условия:

  • Запустить приложение
  • Чтение учетных данных из хранилища (AsyncStorage)
  • Если учетные данные найдены, то
    • Запустите приложение с домашнего экрана
  • Else
    • Запустите приложение с экраном входа в систему

Как мне этого добиться?

У меня есть index.js

import App from './App';

App.js

...
Navigation.registerComponent("myApp.AuthScreen", () => AuthScreen);
Navigation.registerComponent("myApp.HomeScreen", () => HomeScreen);
...

// Start a App
Navigation.startSingleScreenApp({
    screen: {
        screen: "myApp.AuthScreen",
        title: "Login"
    }
});

Ответы [ 2 ]

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

Это сработало! Я не уверен, почему приложение продолжало висеть на заставке. Ниже приведен точный код:

const __init__ = () => {
    try {
        AsyncStorage.getItem("MY-KEY")
            .then((value) => {
                if (value) {
                    startHomeScreen();
                } else {
                    startAuthScreen();
                }
            });
    } catch (e) {
        startAuthScreen();
    }
};
__init__();

Спасибо @ Филип Илиевский!

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

У вас может быть две функции, которые инициализируют одноэкранные приложения и затем вызывают ту, которая удовлетворяет требованиям.

...
Navigation.registerComponent("myApp.AuthScreen", () => AuthScreen);
Navigation.registerComponent("myApp.HomeScreen", () => HomeScreen);
...

function startHomeScreen() {
Navigation.startSingleScreenApp({
    screen: {
        screen: "myApp.HomeScreen",
        title: "Login"
    }
});
}

function startAuthScreen() {
Navigation.startSingleScreenApp({
    screen: {
        screen: "myApp.AuthScreen",
        title: "Home"
    }
});
}

function init() {
   if(...) {
      startAuthScreen();
   } else {
      startHomeScreen();
   }
}

...