Я пытаюсь запустить проект, используя встроенную навигацию, но не могу продолжить.
Прямо сейчас я получаю ошибку, заключающуюся в том, что 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)
Мы очень ценим все, что может привести меня к решению!
Из-за отсутствия ответа я вместо этого переключился на (реагировать на навигацию) [reactnavigation.org/]. Это отличная библиотека, очень рекомендую! @AmitP
только что наткнулся на это? Есть обновления здесь? @AmitP тебе удалось это решить? Благодарность
@jeevium, пожалуйста, убегайте от навигации Wix. За последний год я потратил дни и ночи на устранение ошибок компиляции и различных проблем. Поскольку это требует от вас изменения собственного кода. Это ломает обновления RN! преимущества, которые он должен предоставить (производительность?), практически равны нулю по сравнению с реактивной навигацией, поэтому выбор очевиден.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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