React Native:Native模块不返回任何内容

时间:2015-09-28 04:59:07

标签: javascript android react-native node-modules

我是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中调用该方法时。我可以看到正确的日志"我/ getToken:palapalapala"在logcat中,但是js无法得到任何东西。

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

2 个答案:

答案 0 :(得分:4)

哦,是的。我应该知道 。 js和native之间的通信是异步的。桥接到本机方法的js方法现在无法返回任何内容。因此,我们必须向native发送一个回调函数,并在回调中获得正确的答案。

这就是全部。

答案 1 :(得分:1)

根据反应文档

要将方法公开给JavaScript,必须使用@ReactMethod注释Java方法。桥接方法的返回类型始终为空。 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);
 }
);