我想在reactNative Android應用程序中從@ReactMethod返回布爾值。如何在React Native中從@ReactMethod返回布爾值?
但是,當我做類似的方法來
@ReactMethod
public boolean retBoolean() {
return true;
}
和JS組件調用它,則返回undefined。 只有當返回類型爲void時纔會調用函數,我無法返回字符串或布爾值。
我想在reactNative Android應用程序中從@ReactMethod返回布爾值。如何在React Native中從@ReactMethod返回布爾值?
但是,當我做類似的方法來
@ReactMethod
public boolean retBoolean() {
return true;
}
和JS組件調用它,則返回undefined。 只有當返回類型爲void時纔會調用函數,我無法返回字符串或布爾值。
根據反應文檔
爲了揭露的方法給JavaScript的Java方法必須使用@ReactMethod進行註釋。橋接方法的返回類型總是無效的。反應本地橋是異步的,所以唯一的辦法將結果傳遞給JavaScript是利用回調或發射事件
所以,如果你想返回像布爾或者你需要使用回調字符串一定的價值。
例子:
@ReactMethod
public void isEqual(
int a,
int b,
Callback booleanCallback) {
boolean equal= a == b;
booleanCallback.invoke(equal);
}
在javascript調用像下面...
YourClass.isEqual(
5,
10,
(status) => {
console.log('Result ',status);
}
);
欲瞭解更多信息請參閱this
而不是使用回調,你也可以使用Promise
。
import com.facebook.react.bridge.Promise;
@ReactMethod
public void hasFlash(final Promise promise) {
Camera camera = RCTCamera.getInstance().acquireCameraInstance();
if (null == camera) {
promise.reject("No camera found.");
return;
}
List<String> flashModes = camera.getParameters().getSupportedFlashModes();
promise.resolve(null != flashModes && !flashModes.isEmpty());
}
在JS
然後,
const myFunction = async() => {
const hasFlash = await CameraManager.hasFlash();
}
叫它這似乎是最好的解決辦法 –
哦,所以如何調用返回功能在javascript並獲得Android原生價值迴歸? –