JS调用原生模块的问题 求救。



  • 为什么我按照官网上的步骤依次写了却调用不了原生的方法。

    这是我的代码
    MainApplication.java
    public class MainApplication extends Application implements ReactApplication {

    private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
    @Override
    protected boolean getUseDeveloperSupport() {
    return BuildConfig.DEBUG;
    }

    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage(),
              new TestReactPackage()
      );
    }
    

    };

    @Override
    public ReactNativeHost getReactNativeHost() {
    return mReactNativeHost;
    }
    }

    MyTest.java

    public class MyTest extends ReactContextBaseJavaModule{
    private static final String TestString = "TestString";
    public MyTest(ReactApplicationContext reactContext) {
    super(reactContext);
    }

    @Override
    public String getName() {
        return "MyTest";
    }
    
    @ReactMethod
    public void MyTestFunctiong(String testString) {
        Toast.makeText(getReactApplicationContext(), testString, Toast.LENGTH_SHORT).show();
    }
    

    }

    TestReactPackage .java
    public class TestReactPackage implements ReactPackage {
    @Override
    public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
    List<NativeModule> modules = new ArrayList<NativeModule>();
    modules.add(new MyTest(reactContext));

        return modules;
    }
    
    @Override
    public List<Class<? extends JavaScriptModule>> createJSModules() {
        return Collections.emptyList();
    }
    
    @Override
    public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
        return Collections.emptyList();
    }
    

    }

    JS:
    var {NativeModules}=require('react-native');
    var TestModule = NativeModules.TestModule;
    TestModule.TestFunctiong("TestFunctiong");

    一运行就报错 undefinde is not an object(evaluating "TestModule.TestFunctiong")
    而且使用第三方的插件 也会报这种错误 我用的是0.31版本 这是为什么?



  • @z754654484 说:

    为什么我按照官网上的步骤依次写了却调用不了原生的方法。

    可以参考我之前写的一个实现。 https://github.com/Eleme-IMF/dodo



  • 谢谢!
    我会下载下来慢慢研究。


登录后回复