【问题标题】:Native code method returns undefined instead of string本机代码方法返回未定义而不是字符串
【发布时间】:2021-06-03 08:58:46
【问题描述】:

我有一个简单的测试 react-native 项目正在运行,我想在其中运行一些本机代码。我遵循了开发指南,在我的 android 项目中有一个 module 和一个 package 类,并将其链接到 MainApplication 文件中。它们看起来像这样:

包装:

public class ModulePackage implements ReactPackage {
    @NonNull
    @Override
    public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {
        List<NativeModule> modules = new ArrayList<>();
        modules.add(new ModuleModule(reactContext));
        return modules;
    }

    @NonNull
    @Override
    public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactContext) {
        return Collections.emptyList();
    }
}

模块:

@ReactModule(name = ModuleModule.NAME)
public class ModuleModule extends ReactContextBaseJavaModule {
    public static final String NAME = "ModuleModule";

    @ReactMethod
    public String getData() {
        return "AAAAAAAAAAAAAAAAA";
    }
}

现在我在javascript中导入模块如下:

const { ModuleModule} = NativeModules;

我已经在行上设置了一个断点,在中断和跨过一次之后,模块被加载我进入控制台检查函数是否存在,所以我检查了ModuleModule,它返回了 Object {getData: Function, getConstants: Function} 所以这个函数显然就在那里,我只是从来没有得到我的预期返回值。有没有人遇到过这样的事情?

【问题讨论】:

    标签: javascript typescript react-native react-native-android


    【解决方案1】:

    根据文档,您必须使用 Promise 将数据返回到 JS 接口/桥。 https://reactnative.dev/docs/native-modules-android#promises

    您的实现将更改为

    @ReactMethod
    public void getData(Promise promise) {
       promise.resolve("AAAAAAAAAAAAAAAAA");    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2020-01-28
      相关资源
      最近更新 更多