与React Native进行故障排除iOS本机模块加载问题



我正在尝试理解iOS本机模块,该模块的代码是由djinni生成的。

根据React Native Doc,您必须在代码中包含RCT_EXPORT_MODULE()宏。这个有效的样本没有。

稍后的文档中,据说例外是迅速,没有这样的宏。

除非我错了,否则不是这样。

我正在尝试复制我自己的项目中生成代码的使用,但是当我运行它时,它失败了,因为React Native无法加载我的本机模块:

未定义不是一个对象(评估" helloworld.gethelloworld"(

我想知道我是否可以逐步浏览NativeModule请求代码:

var HelloWorld = NativeModules.HelloWorld;

了解发生了什么。

感谢您的帮助。

解决了所有正确的神秘。

秘密位于AppDelegate实现中:

  RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:moduleInitialiser launchOptions:nil];
  RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
                                                   moduleName:@"ExampleProject"
                                            initialProperties:nil];

rctrootview指针以

调用来初始化

initwithbridge

当然,您必须以前分配rctbridge对象。

在该用例中不需要RCT_Export_Module宏,您只需要提供模块名称:

+ (NSString *)moduleName
{
   return @"HelloWorld";
}

宏自动为您做到这一点。

我仍在使用:

initwithBundleurl

在我自己的项目中,从基本的创建反应应用程序重复。

RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                 moduleName:@"ExampleProject"
                                          initialProperties:nil
                                              launchOptions:launchOptions];

编辑1 :好的,我可能还有另一个问题。它在JavaScript Relooad上不起作用,因此只有该应用程序首次运行。当启用远程JS调试时,它也根本不起作用。奇怪...

相关内容

最新更新