2016-02-27 166 views
0

天然通過響應我有一個主類陣營從請求

class test extends Component

和我創建了一個組件呈現登錄頁面

​​

所以在test我的render方法可以做

return (
    <View> 
    <PageLogin></PageLogin> 
    </View> 
) 

此登錄類使用觸發PageLogin組件的login方法的表單。 login方法使用簡單的fetch將數據發佈到服務器。

login: function (values) { 
    AsyncStorage.getItem('@test:app_access_token', (error, token) => { 
    fetch(Config.BASE_URI + Config.LOGIN_URI, {//omitted}) 
    .then((response) => response.json()) 
    .then((responseData) => { 
     return responseData; 
    }) 
    .done(); 
    }); 
}, 

因此,從形式提交按鈕,我做

var response = this.login(values); 但是當我調試responsenull

回答

3

你的登錄請求觸發異步請求,所以你不能處理var response = this.login(values);

響應

嘗試將您的代碼更改爲:

login: function (values) { 
    return new Promise((resolve) => { 
    AsyncStorage.getItem('@test:app_access_token', (error, token) => { 
    fetch(Config.BASE_URI + Config.LOGIN_URI, {//omitted}) 
    .then((response) => response.json()) 
    .then((responseData) => { 
     resolve(responseData); 
     }); 
    }); 
    }); 
}, 

this.login(values).then((res)=>{ 
    var response = res; 
}); 
+0

我將它改爲您的建議,但響應仍爲空 –

+0

確定您的API響應有數據? –

+0

我敢肯定,我添加了一個控制檯日誌,我返回'responseData',並在其中引用'response = res'。第一個輸出是來自後者的'null',第二個輸出來自'fetch'方法,其中有實際的響應。 –