WIX React-native-navigation v2 不会调用 registerAppLaunchedListener()

Posted

技术标签:

【中文标题】WIX React-native-navigation v2 不会调用 registerAppLaunchedListener()【英文标题】:WIX React-native-navigation v2 will not call registerAppLaunchedListener() 【发布时间】:2018-11-26 06:21:57 【问题描述】:

我正在尝试使用 react-native-navigation 启动一个项目,但似乎无法顺利进行。

现在,我收到的错误是 React 无法渲染根组件,我已经设法找到原因(据我所知)是我创建的函数 Navigation.events().registerAppLaunchedListener,从未调用过,我似乎找不到不调用的原因。我的代码如下

我的 App.js 文件是项目要调用的第一个 JS 文件。项目的根文件可以这么说

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

我的 Navigation.js 文件,带有从 App.js 调用的 start() 函数。在这里,我在 registerAppLaunchedListener() 中初始化根屏幕,这是我的问题。

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

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

        console.log("SETTING ROOT");

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


module.exports = 
  start
;

./screens 中的 index.js 文件,用于将屏幕组件注册到 ID,稍后在 setRoot 下的 registerAppLaunchedListener() 中使用

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

function registerScreens() 
    console.log("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.log("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',
    ,
  );

我尝试按照the react-native-navigation docs 和他们的sample app 上的指南进行操作,但无法理解我正在做的不同之处在于搞砸了!

我的第一个想法是,我认为这可能与我如何导出组件和功能有关,但似乎并非如此。

控制台日志: 开始 登记 注册应用启动列表

但不是从 registerAppLaunchedListener() 设置根目录,所以这就是为什么我认为这是问题所在。

相反,我收到以下错误堆栈

▼警告:React.createElement:类型无效——需要一个字符串 (对于内置组件)或类/函数(对于复合 组件)但得到:对象。您可能忘记导出您的 来自定义它的文件中的组件,或者您可能混淆了 默认和命名导入。

在 registerRootComponent.js:35 检查您的代码。 在 ExpoRootComponent (在 renderApplication.js:33) 在 RCTView 中(在 View.js:60) 在视图中(在 AppContainer.js:102) 在 RCTView 中(在 View.js:60) 在视图中(在 AppContainer.js:122) 在 AppContainer 中(在 renderApplication.js:32 处)

非常感谢任何能让我找到解决方案的东西!

【问题讨论】:

这有什么更新吗? 由于无人接听,我改用(反应导航)[reactnavigation.org/]。这是一个很棒的图书馆,强烈推荐它! @AmitP 刚刚碰到那个?这里有更新吗? @AmitP您设法解决了吗?谢谢 @jeevium 请远离 wix 导航。在过去的一年里,我花了几天几夜的时间来解决编译错误和各种问题。因为它需要您修改本机代码。它破坏了 RN 升级!与 reactnavigation 相比,它应该提供的优势(性能?)几乎为零,因此选择是显而易见的。 【参考方案1】:

尽快使用 registerAppLaunchedListener 注册监听器 - 它应该是 index.js 文件中的第一行之一。如果您在重新启动应用程序后观察到“白屏”或挂起的初始屏幕,这可能意味着应用程序启动后未调用 Navigation.setRoot。也许听众注册得太晚了。 - 来自文档

【讨论】:

以上是关于WIX React-native-navigation v2 不会调用 registerAppLaunchedListener()的主要内容,如果未能解决你的问题,请参考以下文章

wix上可以修改别人的网站吗

WiX 技巧和窍门

Wix:无法从Wix CustomAction调用DISM

Wix:在 Wix 之外运行命令时,运行外部 InstallShield 安装程序失败,退出代码为 -3

CMake系列:WIX打包

CMake系列:WIX打包