2017-06-20 1 views
1

Je dois renvoyer le résultat d'une fonction d'une autre page en réagissant nativement en effectuant un appel de récupération. J'utilise la méthode comme suit. Comme je le sais, c'est parce que l'appel asynchrone. Existe-t-il un moyen spécial d'y parvenir en réagissant natif?Renvoie la valeur de résultat avec la fonction d'appel de récupération à partir d'une autre page, React native

fetchcall.js

import address from '../actions/address' 
const dashboard = { 
    getvals(){ 

    return fetch(address.dashboardStats(), 
    {method: "POST", 
     headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json', 
     }, 
     body: JSON.stringify({... 
     }), 
    }) 
    .then((response) => response.json()) 
    .then((responseData) => { 
     console.warn(responseData); 
     return responseData; 

    }) 
    .catch((error) => { console.warn(error); }) 
    .done(); 
    // return 'test_val''; 
    } 
} 

export default dashboard; 

dashboard.js

Son écran le résultat comme "non défini", mais qui vont rechercher appellent des œuvres et affiche le résultat. Toute suggestion?

+0

Êtes-vous sûr qu'il est '' getTestval' et non getvals'? – akond

+0

@akond, Désolé pour cela, c'était une erreur lors de l'édition de la question. Je l'ai édité maintenant. –

+0

Je vois que vous utilisez connect-redux connect, mais je ne vois pas du tout la définition de mapStateToProps. L'utilisez-vous même? Considéreriez-vous une solution sans redux? –

Répondre

2

Dans fetchcall.js vous renvoyez une promesse. En outre, puisque vous renvoyez le responseData dans la méthode .then() elle-même, vous n'avez pas besoin de la méthode .done(). Comme getvals() renvoie une promesse, vous devez accéder à sa valeur dans une méthode .then().

Dans l'ensemble, votre code devrait ressembler à ceci:

function getvals(){ 
 
    return fetch('https://jsonplaceholder.typicode.com/posts', 
 
    { 
 
    \t method: "GET", 
 
     headers: { 
 
     'Accept': 'application/json', 
 
     'Content-Type': 'application/json', 
 
     }, 
 
    }) 
 
    .then((response) => response.json()) 
 
    .then((responseData) => { 
 
     console.warn(responseData); 
 
     return responseData; 
 
    }) 
 
    .catch(error => console.warn(error)); 
 
    } 
 
    
 
    getvals().then(response => console.log(response));