我正在使用React Native创建一个应用程序,并且遇到了一些主要问题,从我的服务器获取数据并在我的程序中使用它。
我的架构与React Native在其文档中提供的示例略有不同,但我尝试了一些不同的方法。令牌是正确的,我显然在某种意义上正确地调用了该方法,但它并没有将数据返回到我程序的另一端。
在Methods.js
中exports.loginUser = function(TOKEN) {
fetch(baseUrl + 'login' , {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
accessToken: TOKEN,
},)
})
.then((response) => response.text())
.then((responseText) => {
console.log(typeof responseText);
return responseText
})
.catch((error) => {
console.warn(error);
});
};
它将数据类型记录为字符串,并在我按原样调用时正确打印出来。但是,我的应用程序无法以任何方式检索数据,它只是返回未定义。
在Home.js
var Method = require('../Services/Methods');
.
.
.
var ComponentTwo = React.createClass({
getInitialState: function() {
return {
text: 'Loading...',
}
},
componentDidMount: function() {
{
this.setState({
text: Method.loginUser(AccessToken)
})
}
},
render: function() {
console.log(Method.loginUser(AccessToken));
console.log(this.state.text);
我现在处于试用和错误模式,但两个日志都返回undefined,除了我登录的Methods.js,所以我认为只是点击return responseText
就会出现问题,但我不知道我知道任何其他方式,因为它们在两个单独的文件中。所以我认为这个问题在Method.JS中,因为调用它会以我尝试的各种方式失败。
答案 0 :(得分:1)
我认为您必须从loginUser
函数返回一个承诺,例如:
exports.loginUser = function(TOKEN) {
return new Promise((resolve, reject) => {
fetch(baseUrl + 'login' , {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
accessToken: TOKEN,
},)
})
.then((response) => response.text())
.then((responseText) => {
console.log(typeof responseText);
resolve(responseText);
})
.catch((error) => {
reject(error);
});
});
};
然后像这样调用你的函数:
Method.loginUser(AccessToken)
.then((res) => console.log(res))
.catch((error) => console.log(error))
.done();
我尚未确认上述代码是否有效,只是为了给您一个想法。