0

반응 네이티브 네이티브 모듈의 경우 을 사용하여 메소드를 내보내고 JSX에서 호출 할 수 있지만, 반응 할 때 동일한 작업을 수행하는 방법은 분명합니다. 네이티브 네이티브 UI 구성 요소? 난 단지 @ReactProp 참조 문서에서 안드로이드에서 네이티브 네이티브 UI 컴포넌트 메소드를 구현하는 방법

언급된다. @ReactMethod이 작동하지 않는 경우 JSX에서 내 기본 UI 구성 요소의 속성에 어떻게 액세스합니까? (아이폰 OS에이 RCT_EXPORT_METHOD 네이티브 UI 구성 요소에서 수행 할 수 있지만 안드로이드 가능 비슷한입니까?)

감사합니다. 반응 네이티브 안드로이드 UI 구성 요소에 대한

답변

0

, 당신은 당신의 뷰 클래스가 SimpleViewManager를 확장해야한다.

문서 here을 참조하십시오.

다음
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; 
    } 

} 

내가 그 구성 요소에 대해 만든 모듈입니다 :

여기 내 UI 구성 요소입니다 :

+0

아 내가 이미하고 있어요, 난 그냥 네이티브 메서드를 호출하고 기본 UI 구성 요소 (안 이벤트)에 대한 자바 스크립트로 값을 반환하는 방법을 모르겠어요. – SudoPlz

+0

죄송합니다. 귀하의 메시지를 잃어 버렸습니다. '@ ReactMethod'가 내 프로젝트에서 작동합니까? 오류 메시지는 무엇입니까? – Val

+0

당신은'ReactContextBaseJavaModule'이 아닌'ViewGroupManager' 또는'SimpleViewManager'를 확장하고 있습니까? 'ReactContextBaseJavaModule's에서 작동한다는 것을 알고 있습니다. 'undefined는 객체가 아닙니다 (MyNativeComponent.init을 평가합니다.)' – SudoPlz

0

가 좋아 나는 모듈을 만들고, 그것의 생성자에서 UI 구성 요소 참조를 전달 결국 :

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 
     } 
    } 
} 

그리고 여기에 나와있는 두 가지를 결합하여 내 패키지 선언 : 그것은 마법처럼 작동

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 
     ); 
    } 
} 

.