react native 原生模块桥接的简单说明
生活随笔
收集整理的這篇文章主要介紹了
react native 原生模块桥接的简单说明
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文出自:https://github.com/prscX/awes...
博客鏈接:https://ssshooter.com/2019-02...
博客鏈接:https://ssshooter.com/2019-02...
Android
創建原生模塊包
- 通過繼承 ReactPackage 為你的原生模塊包創建 Java 類,可以這么寫:
- 覆蓋 createNativeModules 和 createViewManagers 方法
- 在 createNativeModules 方法中添加原生模塊
- 在 createViewManagers 方法中添加原生 UI 組件
創建原生模塊
- 先通過繼承 ReactContextBaseJavaModule 創建 MyNativeModule 類。
- 為了讓 React Native 在 NativeModules 中找到我們的模塊,我們還需要覆蓋 getName 方法。
- 現在我們已經擁有一個可以導入到 JavaScript 代碼的原生模塊,現在可以向其中加入功能。
- 暴露模塊方法:定義一個接受設置參數、成功回調和失敗回調的 Show 方法。
- 在 JavaScript 中調用模塊方法
注意:
- 模塊方法只提供靜態引用,不包含于 react 樹中。
創建原生 UI 組件
- 如果你需要在 react 樹中渲染一個原聲 UI 組件
- 創建一個繼承 ReactNative ViewGroupManager 的 Java 類
- 覆蓋 getName 方法:
- 覆蓋 createViewInstance 方法,返回你的自定義原生組件
- 創建原生 prop 方法
- JavaScript 中使用
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
創建原生模塊包
我們需要在項目中添加兩個文件:頭文件和源文件。
- MyNativePackage.h#import "RCTBridgeModule.h"@interface MyNativePackage : NSObject <RCTBridgeModule> @end- MyNativePackage.m#import "MyNativePackage.h"@implementation MyNativePackageRCT_EXPORT_MODULE();@end創建模塊方法
RCT_EXPORT_METHOD(Show:(RCTResponseSenderBlock)callback) { }- JavaScript 中引入模塊方法
創建原生 View 組件
- 創建 view 方法,返回你的原聲組件
- 創建原生 prop 方法
- 在 JavaScript 中使用
總結
以上是生活随笔為你收集整理的react native 原生模块桥接的简单说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爬虫基础, 乱码问题, jupyter,
- 下一篇: 耳鼻喉专科服务机构“仁树医疗”完成数千万