【问题标题】:React Native : Native modules return nothingReact Native:本机模块不返回任何内容
【发布时间】:2015-12-25 06:42:02
【问题描述】:

我是 React Native 的新手,我想调用原生模块从 Android 获取一些字符串。我这样写代码:

@ReactMethod
public String getToken() {
    String token = "";
    //then take the token
    Log.i("getToken:", token);
    return token;
}

然后在js中使用。

var tokenString = thismodule.getToken();

但是,当我在 js 中调用该方法时。我在 logcat 中可以看到正确的日志“I/getToken : palapalapala”,但是 js 什么都得不到。

那么,正确的代码是什么?

【问题讨论】:

    标签: javascript android react-native node-modules


    【解决方案1】:

    哦,是的。我应该知道 。 js和native之间的通信是异步的。桥接本机方法的js方法,现在什么都不能返回。所以,我们必须向native发送一个回调函数,并在回调中得到正确的答案。

    就是这样。

    【讨论】:

    • 您能否举例说明我们如何做到这一点?
    【解决方案2】:

    根据反应文档

    要向 JavaScript 公开方法,必须使用 @ReactMethod 注释 Java 方法。桥接方法的返回类型始终为 void。 React Native 桥接器是异步的,因此将结果传递给 JavaScript 的唯一方法是使用回调或发出事件

    @ReactMethod
    public void getToken(Callback callback) {
        String token = "";
        //then take the token
        Log.i("getToken:", token);
        callback.invoke(token);
    }
    
    thismodule.getToken((token) => {
      console.log('Result ',token);
     }
    );
    

    【讨论】:

      猜你喜欢
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      相关资源
      最近更新 更多