2015-04-21 2 views
13

Qual è il modo migliore per esportare un metodo con un valore restituito in React Native?React Native: come esportare un metodo con un valore restituito?

So che c'è RCT_EXPORT_METHOD, ma funziona solo per i metodi che sono (void) e pertanto non restituiscono nulla. Preferibilmente non ho bisogno di esportare l'intera classe, solo alcuni metodi.

L'altra opzione sarebbe quella di avere una richiamata, ma vorrei evitarlo, se possibile, perché gonfia troppo il codice nel mio caso d'uso. Ci sono altre opzioni che potrei aver perso?

+0

Voglio sapere come è stato fatto. Usando le callback andava bene, ma a parte questo c'è qualche alternativa. E possiamo usare quelli risolti e rifiutati in RCT_EXPORT_METHOD ??? – Ramakrishna

risposta

1

Non sembra ancora. Questa dovrebbe essere una funzione da supportare.

2

valori di ritorno tentativo con Callbacks

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

È inoltre possibile ora utilizzare le promesse, che tendono a guardare un po 'più nel vostro JS.

Objective 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" }]); 
    } 
} 

Poi nel JS:

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

Come utilizzare lo stato in // fare qualcosa con lo stato Quando sto provando a stamparlo nel registro, viene visualizzato come [Oggetto oggetto] Puoi spiegare come stampare il valore della stringa? – Manisha

+0

@chrishale come puoi chiamare e dare dati al metodo getThing dall'obiettivo C? – Nirmalsinh