WIX React-native-navigation v2 не будет вызывать registerAppLaunchedListener ()

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

Прямо сейчас я получаю ошибку, заключающуюся в том, что React не может отобразить корневой компонент, и мне удалось обнаружить, что причина (насколько я понимаю) в том, что создаваемая мной функция Navigation.events (). RegisterAppLaunchedListener никогда не вызывается. , и я не могу найти причину, почему нет. Мой код выглядит следующим образом

Мой файл App.js, который является первым файлом JS, вызываемым проектом. Корневой файл проекта так сказать

const { start} = require('./Navigation')
start();

Мой файл Navigation.js с функцией start (), вызываемой из App.js. Здесь я инициализирую корневой экран в registerAppLaunchedListener (), и это моя проблема.

const { Navigation } = require('react-native-navigation');
const { registerScreens } = require('./screens');
const { Platform } = require('react-native');

function start() {
    console.info("START")
    registerScreens();
    console.info("REGISTERING APP LAUNCH LISTER")
    Navigation.events().registerAppLaunchedListener(() => {

        console.info("SETTING ROOT");

        Navigation.setRoot({
            root: {
                stack: {
                  children: [
                    {
                      component: {
                        name: 'navigation.loginscreen'
                      }
                    }
                  ]
                }
              }
        });
    });
}

module.exports = {
  start
};

Файл index.js в ./screens, который используется для регистрации компонентов экрана в идентификаторах, которые позже используются в registerAppLaunchedListener () в setRoot

const { Navigation } = require('react-native-navigation');
const LoginScreen = require('./LoginScreen');
const HomeScreen = require('./HomeScreen');

function registerScreens() {
    console.info("REGISTER");
    Navigation.registerComponent('navigation.loginscreen', () => LoginScreen);
    Navigation.registerComponent('navigation.homescreen', () => HomeScreen);
}


module.exports = {
    registerScreens
};

И, наконец, экран, который я хочу отобразить первым, тот, который никогда не появляется, LoginScreen.js. Очень просто.

import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import {BackgroundHex} from '../Backend/Constants'


class LoginScreen extends React.Component{
    render() {

        console.info("HEYEHY")

        return (
          <View style = {styles.container}>
            <Text>Open up App.js to start working on your app!</Text>
          </View>
        );
      }
}

module.exports = LoginScreen;


const styles = StyleSheet.create({
    container: {
      flex: 1,
      backgroundColor: '#fff',
      alignItems: 'center',
      justifyContent: 'center',
    },
  });

Я пытался следовать руководству по документы реагировать-родной-навигации и их образец приложения, но не могу понять, что я делаю иначе, что портит его!

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

Журналы консоли: НАЧАЛО РЕГИСТР РЕГИСТРАЦИЯ СПИСОК ЗАПУСКА ПРИЛОЖЕНИЙ

но не УСТАНОВКА ROOT из registerAppLaunchedListener (), поэтому я считаю, что это проблема.

Вместо этого я получаю следующий стек ошибок

▼Warning: React.createElement: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: object. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.

Check your code at registerRootComponent.js:35. in ExpoRootComponent (at renderApplication.js:33) in RCTView (at View.js:60) in View (at AppContainer.js:102) in RCTView (at View.js:60) in View (at AppContainer.js:122) in AppContainer (at renderApplication.js:32)

Мы очень ценим все, что может привести меня к решению!

Есть новости по этому поводу?

AmitP 05.08.2018 17:24

Из-за отсутствия ответа я вместо этого переключился на (реагировать на навигацию) [reactnavigation.org/]. Это отличная библиотека, очень рекомендую! @AmitP

Glenn O 06.08.2018 11:02

только что наткнулся на это? Есть обновления здесь? @AmitP тебе удалось это решить? Благодарность

jeevium 14.03.2019 12:07

@jeevium, пожалуйста, убегайте от навигации Wix. За последний год я потратил дни и ночи на устранение ошибок компиляции и различных проблем. Поскольку это требует от вас изменения собственного кода. Это ломает обновления RN! преимущества, которые он должен предоставить (производительность?), практически равны нулю по сравнению с реактивной навигацией, поэтому выбор очевиден.

AmitP 14.03.2019 14:37
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
4
1 090
1

Ответы 1

Зарегистрируйте слушателя в registerAppLaunchedListener как можно скорее - он должен быть одной из первых строк в вашем файле index.js. Если вы наблюдаете «белый экран» или висящий экран-заставку после перезапуска приложения, это, вероятно, означает, что Navigation.setRoot не вызывается после запуска приложения. Возможно, слушатель зарегистрировался слишком поздно. - Из документов

Другие вопросы по теме