Android
創建原生模塊包
public class MyNativePackage implements ReactPackage { @Override public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) { } @Override public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { }}在 createNativeModules 方法中添加原生模塊
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) { List<NativeModule> modules = new ArrayList<>(); modules.add(new MyNativeModule(reactContext)); return modules;}在 createViewManagers 方法中添加原生 UI 組件
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { List<ViewManager> components = new ArrayList<>(); components.add(new RNNativeComponent()); return components;}創建原生模塊
先通過繼承 ReactContextBaseJavaModule 創建 MyNativeModule 類。
public class MyNativeModule extends ReactContextBaseJavaModule { public MyNativeModule(ReactApplicationContext reactContext) { super(reactContext); }}為了讓 React Native 在 NativeModules 中找到我們的模塊,我們還需要覆蓋 getName 方法。
@Overridepublic String getName() { return "MyNativeModule";}現在我們已經擁有一個可以導入到 JavaScript 代碼的原生模塊,現在可以向其中加入功能。
暴露模塊方法:定義一個接受設置參數、成功回調和失敗回調的 Show 方法。
public class MyNativeModule extends ReactContextBaseJavaModule { @ReactMethod public void Show(ReadableMap config, Callback successCallback, Callback cancelCallback) { Activity currentActivity = getCurrentActivity(); if (currentActivity == null) { cancelCallback.invoke("Activity doesn't exist"); return; } }}在 JavaScript 中調用模塊方法
import { NativeModules } from 'react-native'const { MyNativeModule } = NativeModulesMyNativeModule.Show( {}, //Config Parameters () => {}, //Success Callback () => {} //Cancel Callback)注意:
模塊方法只提供靜態引用,不包含于 react 樹中。
創建原生 UI 組件
如果你需要在 react 樹中渲染一個原聲 UI 組件
創建一個繼承 ReactNative ViewGroupManager 的 Java 類
public class RNNativeComponent extends ViewGroupManager<ViewGroup> { public static final String REACT_CLASS = "RNNativeComponent";}
新聞熱點
疑難解答
圖片精選