ReactNative与原生通信

作者: 踏云小子 | 来源:发表于2018-01-02 18:13 被阅读129次

1. 从原生组件传递属性到React Native(原生->RN)

通过RCTRootView将属性传给RN

iOS代码如下

NSDictionary *props = @{@"desc":@"hello, fuck you"};
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                      moduleName:@"XYMobileTest"
                                               initialProperties:props
                                                   launchOptions:nil];
MainViewController* vc = [[MainViewController alloc] init];
vc.view = rootView;

2. 从React Native传递属性到原生组件(RN->原生)

2.1 iOS做如下修改

  • 引入#import <React/RCTBridgeModule.h>以及<RCTBridgeModule>协议
  • 必须实现RCT_EXPORT_MODULE()方法
  • 设置你自定义的方法
RCT_EXPORT_METHOD(testName:(NSString *)name){
  NSLog(@"%@",name);
};

2.2 JS做如下修改

  • 引入import { NativeModules } from 'react-native';
  • 使用OC中定义的方法
let connection = NativeModules.XYConnection;
connection.testName('Will');

具体可见一个demo,欢迎✨✨✨

相关文章

网友评论

  • system:试了一下貌似点击Goto Mine之后XYConnection.m里面的testName方法NSLog()不会被执行,应该是什么问题呢?
    system:@踏云小子 另外,跳转到XYMineViewController也真实发生了,只不过是UI上的name并没有显示出来,不知道是怎么回事。不懂ios,抱歉:)
    system:@踏云小子 没有报错,估计是执行了但没有打印。难道是RCT_EXPORT_MODULE是在子线程中执行的,所以NSLOG不打印?
    踏云小子:有没有报错信息呢

本文标题:ReactNative与原生通信

本文链接:https://www.haomeiwen.com/subject/uajqnxtx.html