2016-05-16 14 views
7

ReaNative Android uygulamasında @ReactMethod uygulamasından bir Boole döndürmek istiyorum.Nasıl React Native içinde @ReactMethod bir Boolean döndürmek için?

Ama

@ReactMethod 
public boolean retBoolean() { 
return true; 
} 

benzer bir yöntem yapmak ve JS bileşeninden diyoruz, bunun tanımsız döndürür. yalnızca dönüş türü boş olduğunda işlev çağrıldığında, dize veya boole döndüremiyorum.

cevap

13

bir Java yöntemi @ReactMethod kullanarak açıklamalı olmalıdır JavaScript için bir yöntem göstermek için dokümantasyon

tepki göre. Köprü yöntemlerinin dönüş tipi her zaman geçersizdir. tek yol JavaScript bir sonuç geçmesine böylece Yerli köprü eşzamansızsa tepki geri aramalar kullanarak veya olayları

yayan gereğidir Yani boolean veya geri aramalar kullanmak gerekir dize gibi bazı değer döndürmek istiyorum.

Örnek: Daha fazla bilgi için Aksine geri arama kullanmak yerine this

2

bakın

@ReactMethod 
public void isEqual(
     int a, 
     int b, 
     Callback booleanCallback) { 
    boolean equal= a == b; 
    booleanCallback.invoke(equal); 
} 

YourClass.isEqual(
5, 
10, 
(status) => { 
    console.log('Result ',status); 
} 
); 

... aşağıda gibi javascript çağrı olarak, ayrıca Promise kullanabilirsiniz. senin JS Sonra

@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()); 
} 

import com.facebook.react.bridge.Promise;

,

const myFunction = async() => { 
    const hasFlash = await CameraManager.hasFlash(); 
} 
+0

ile adlandırdığımız bu en iyi çözüm –

+0

Ah gibi görünüyor böylece javascript dönüş işlevi çağırmak ve android yerlisi değer getiriyi elde etmek için nasıl ? –