gpt4 book ai didi

react-native - 如何在 Android 中实现一个 React Native UI 组件方法

转载 作者:行者123 更新时间:2023-12-04 23:38:09 24 4
gpt4 key购买 nike

我很清楚,对于 react-native 原生模块,我们可以使用 @ReactMethod导出一个方法并从 JSX 调用它,但是我们如何在 react-native 原生 UI 组件中做同样的事情呢?

在文档中我只看到 @ReactProp被提及。
如果 @ReactMethod不工作,我如何从 JSX 访问我的 native UI 组件的属性呢? (在 iOS 上,这可以在带有 RCT_EXPORT_METHOD 的 native ui 组件上完成,但在 Android 上是否有类似的可能?)

谢谢你。

最佳答案

好的,我最终创建了一个模块,并在它的构造函数上传递了一个 UI 组件引用:

这是我的 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
}
}
}

以下是我在我的 中将这两者结合在一起的方法包宣言:
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
);
}
}

它就像一个魅力。

关于react-native - 如何在 Android 中实现一个 React Native UI 组件方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47440642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com