我是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无法得到任何东西。
那么,这是什么正确的代码?
答案 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);
}
);