2015-04-21 9 views
13

Jaki jest najlepszy sposób eksportu metody z wartością zwracaną w React Native?React Native: Jak wyeksportować metodę z wartością zwracaną?

Wiem, że jest RCT_EXPORT_METHOD, ale to działa tylko dla metod, które są (void) i dlatego nic nie zwracają. Najlepiej nie muszę eksportować całej klasy, tylko kilka metod.

Inną opcją byłoby wywołanie zwrotne, ale chciałbym tego uniknąć, jeśli to możliwe, ponieważ zbytnio wyostrza kod w moim przypadku użycia. Czy są jakieś inne opcje, które mogłem pominąć?

+0

Chcę wiedzieć, jak to zostało zrobione. Używając callbacków było w porządku, ale poza tym jest jakakolwiek alternatywa. Czy możemy użyć tych rozstrzygnięć i odrzucić w RCT_EXPORT_METHOD ??? – Ramakrishna

Odpowiedz

1

Wydaje się, że jeszcze nie ma sposobu. To powinna być cecha do wsparcia.

2

zwracane wartości spróbuj Callbacks

RCT_EXPORT_METHOD(findEvents:(RCTResponseSenderBlock)callback) 
{ 
    NSArray *events = ... 
    callback(@[[NSNull null], events]); 
} 
8

Można też teraz używać obietnic, które mają tendencję do wyglądają trochę ładniejszy w JS.

Cel C:

RCT_REMAP_METHOD(getThing, resolver: (RCTPromiseResolveBlock)resolve 
    rejecter:(RCTPromiseRejectBlock)reject) 
{ 
    if(condition) { 
    NSString *thingToReturn = @"ALL OK"; 
    resolve(thingToReturn); 
    } else { 
    reject([NSError errorWithDomain:@"com.companyname.app" code:0 userInfo:@{ @"text": @"something happend" }]); 
    } 
} 

Następnie w JS:

async onPress() { 
    try { 
    const status = await CustomModule.getThing(); 
    // do something with status 
    } catch(e) { 
    console.error(e); 
    } 
} 
+0

Jak używać statusu w // zrobić coś ze statusem Kiedy próbuję wydrukować go w dzienniku, pojawia się jak [Obiekt obiektu] Czy możesz wyjaśnić, jak wydrukować wartość ciągu? – Manisha

+0

@chrishale jak zadzwonić i przekazać dane do metody getThing z Celu C? – Nirmalsinh