1

私は既存のネイティブアンドロイドとios SDKの周囲に反応ネイティブラッパーを構築しようとしています。 AndroidとiOSブリッジモジュールで同じクラス名とクラスメソッドを使用できるかどうかを知りたいですか?そして、適切なデバイスのために呼び出される適切なモジュールをどのようにマップするのですか? iOS用の例えばreact-native:アンドロイドとiOSの両方に同じ名前のネイティブモジュール

、:Android用

// CalendarManager.h 
#import "RCTBridgeModule.h" 
@interface CalendarManager : NSObject <RCTBridgeModule> 
@end 

// CalendarManager.m 
@implementation CalendarManager 
RCT_EXPORT_MODULE(); 
@end 

RCT_EXPORT_METHOD(addEvent:(NSString *)name location:(NSString *)location) 
{ 
    //Some work 
} 

public class CalendarManager extends ReactContextBaseJavaModule { 

    public CalendarManager(ReactApplicationContext reactContext) { 
    super(reactContext); 
    } 

    @Override 
    public String getName() { 
    return "CalendarManager"; 
    } 

    @ReactMethod 
    public void addEvent(String name, String location) { 
    //Some work 
    } 
} 

そして、私のjsファイルで、私はこのようなものがある場合:1意志

import { NativeModules } from 'react-native'; 
NativeModules.CalendarManager.addEvent("Name", "Location") 

を実行される?デバイスに基づいて適切な機能にルーティングできる方法はありますか?

ありがとうございました。

答えて

1

React Nativeは、アプリケーションAPKまたはIPAの作成時に設定したターゲットプラットフォームに従って、プロジェクトにあるコードと異なるバージョンのパッケージをパッケージ化します。つまり、例えばreact native run-androidを実行すると、androidフォルダにあるAndroidプロジェクトに存在するネイティブJavaコードがコンパイルされ、そこにAPKがパックされます。その後、JavaScriptはネイティブJavaコードにアクセスできます。 Objective-C/Swiftコードを使用したiOSの場合と同じことです。そう、はい、ネイティブモジュールに同じ名前を使用することができます(実際には、私はあなたがそうしなければならないと言います)。

2

自分でルーティングする必要はありません。それはリアクションネイティブに組み込まれています。あなたが使用しているデバイスのタイプを知っています。

関連する問題