2016-02-27 106 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'方法,其中有实际的响应。 –