React Native:本机模块不返回任何内容
Posted
技术标签:
【中文标题】React Native:本机模块不返回任何内容【英文标题】:React Native : Native modules return nothing 【发布时间】: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 什么都得不到。
那么,正确的代码是什么?
【问题讨论】:
【参考方案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);
);
【讨论】:
以上是关于React Native:本机模块不返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章
错误:传感器的本机模块不可用。 react-native 链接是不是运行成功?
初始化本机ReactLocalization模块时出错了。请检查您的配置:您是否运行'react-native link'?
在本机 ios 中找不到模块“react-native-reanimated/plugin”