原文出自:https://github.com/prscX/awesome-react-native-native-modules
Android
创建原生模块包
- 在
createNativeModules
方法中添加原生模块
- 在
createViewManagers
方法中添加原生 UI 组件
创建原生模块
- 先通过继承 ReactContextBaseJavaModule 创建 MyNativeModule 类。
- 为了让 React Native 在 NativeModules 中找到我们的模块,我们还需要覆盖 getName 方法。
注意:
- 模块方法只提供静态引用,不包含于 react 树中。
创建原生 UI 组件
- 覆盖
createViewInstance
方法,返回你的自定义原生组件
iOS
Macro
-
RCTBridgeModule: RCTBridgeModule 是一个 protocol,它为注册 bridge 模块 RCTBridgeModule @protocol RCTBridgeModule
提供了一个接口
-
RCT_EXPORT_MODULE(js_name): 在 class implementation 时使用 bridge 注册你的模块。参数 js_name 是可选的,用作 JS 模块的名称,若不定义,将会默认使用 Objective-C 的 class 名
-
RCT_EXPORT_METHOD(method)\RCT_REMAP_METHOD(, method): bridge 模块亦可定义方法,这些方法可以作为 NativeModules.ModuleName.methodName
输出到 JavaScript。
上面的例子暴露到 JavaScript 是 NativeModules.ModuleName.funcName
创建原生模块包
我们需要在项目中添加两个文件:头文件和源文件。
创建模块方法
创建原生 View 组件