0

反応ネイティブのネイティブモジュールの場合、@ReactMethodを使用してメソッドをエクスポートし、JSXから呼び出すことはできますが、リアクションで同じことを行うにはどうすればよいですかネイティブのネイティブUIコンポーネントAndroidでリアクションネイティブUIコンポーネントメソッドを実装する方法

ドキュメントには、@ReactPropが記載されています。 @ReactMethodが機能しない場合、JSXからネイティブUIコンポーネントのプロパティにアクセスするにはどうすればよいですか? (iOSでこれはRCT_EXPORT_METHODでネイティブuiコンポーネントで行うことができますが、Androidで同様のことが可能ですか?)

ありがとう。

答えて

0

反応しやすいAndroid UIコンポーネントの場合、ビュークラスをSimpleViewManagerまで拡張する必要があります。

hereを参照してください。

+0

ああ私は既にそれをやっています。ネイティブメソッドを呼び出してネイティブUIコンポーネント(イベントではない)の値をjavascriptに戻す方法はわかりません。 – SudoPlz

+0

申し訳ありませんが、私はあなたのメッセージを紛失しました。 '@ ReactMethod'は自分のプロジェクトで動作しますが、どのようなエラーメッセージが表示されますか? – Val

+0

'ReactContextBaseJavaModule'ではなく' ViewGroupManager'または 'SimpleViewManager'を拡張していますか? 私はそれが 'ReactContextBaseJavaModule'sで動作することを知っています。 'undefinedはオブジェクトではない(MyNativeComponent.initを評価する)' – SudoPlz

0

私はモジュールを作成することになった、とそれのコンストラクタにUIコンポーネントの参照を渡すOK:

ここに私のUIコンポーネントです:

public class RCTACCalendarManager extends ViewGroupManager <RCTACCalendar> { 
    public static final String REACT_CLASS = "RCTACCalendar"; 
    private RCTACCalendar calendarInstance; 
    public RCTACCalendarManager(ReactApplicationContext reactContext) { 
      super(); 
     } 

     @Override 
     public String getName() { 
      return REACT_CLASS; 
     } 


     @Override 
     public RCTACCalendar createViewInstance(ThemedReactContext context) { 
      calendarInstance = new RCTACCalendar(context); 
      return calendarInstance; 
    } 

    public RCTACCalendar getCalendarInstance() { // <-- returns the View instance 
     return calendarInstance; 
    } 

} 

ここで私は、そのコンポーネント用に作成モジュールだが:

public class RCTACCalendarModule extends ReactContextBaseJavaModule { 

    private RCTACCalendar calendarInstance; 

    public RCTACCalendarModule(ReactApplicationContext reactContext, RCTACCalendarManager calManager) { 
     super(reactContext); 
     if (calManager != null) { 
      calendarInstance = calManager.getCalendarInstance(); 
     } 

    } 

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

    @ReactMethod 
    public void mySuperDuperFunction(Promise promise) { 
     if (calendarInstance != null) { 
      calendarInstance.mySuperDuperFunction(promise); // <-- Magic 
     } 
    } 
} 

ここで私はこれらの2つをパッケージ宣言:それは魔法のように動作

public class RCTACCalendarPackage implements ReactPackage { 

    private RCTACCalendarManager calManager; 

    @Override 
    public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) { 
     if (calManager == null) { 
      calManager = new RCTACCalendarManager(reactContext); 
     } 
     return Arrays.<NativeModule>asList(
       new RCTACCalendarModule(reactContext, calManager) 
     ); 

    } 

    @Override 
    public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { 
     if (calManager == null) { 
      calManager = new RCTACCalendarManager(reactContext); 
     } 
     return Arrays.<ViewManager>asList(
      calManager 
     ); 
    } 
} 

関連する問題