Android 无法设置本机获取的状态
您好,我尝试设置fetch调用的状态,如下所示:Android 无法设置本机获取的状态,android,react-native,fetch,Android,React Native,Fetch,您好,我尝试设置fetch调用的状态,如下所示: getCats() { fetch(GLOBALS.API + '/specials.php?action=getCats&key=' + GLOBALS.KEY) .then((response) => response.json()) .then((responseJson) => { this.setState = ({
getCats() {
fetch(GLOBALS.API + '/specials.php?action=getCats&key=' + GLOBALS.KEY)
.then((response) => response.json())
.then((responseJson) => {
this.setState = ({
dataSource: "test"
});
Alert.alert("test");
})
.catch((error) => {
console.log(error.toString());
});
}
componentDidMount() {
this.getCats();
console.log(this.state.dataSource);
}
但是这句话:
console.log(this.state.dataSource);
返回未定义的我
我收到了“测试”的警报
什么问题
tnx a lotFetch是异步的,因此它将在运行then子句中的代码之前立即返回。因此,在控制台日志记录之前,setState不会运行。您可以使用回调。 下面是代码示例 下面是成功和失败回调的代码 下面是绑定成功和失败回调的代码
那么,我如何在获取后使用获取中的数据创建listview呢?当更改状态时,组件将自动重新呈现。也就是说,如果呈现方法正确地依赖于状态,则状态更改是在状态更改后自动更新UI所需的全部。因此,一种方法是使用一个初始为空的数组作为状态变量,在呈现方法中循环该变量(呈现listview),并使用http请求中的值填充状态变量,从而使用更新的值重新呈现。检查我的回答我很高兴它对您有效。你也可以投票吗:-)
getCats(successCallBack, failureCallback) {
fetch(GLOBALS.API + '/specials.php?action=getCats&key=' + GLOBALS.KEY)
.then(
function(response) {
if (response.status !== 200) {
console.log('Looks like there was a problem. Status Code: ' +
response.status);
failureCallback();
}
// Examine the text in the response
response.json().then(function(data) {
console.log(data)
successCallBack(data);
});
}
)
.catch(function(err) {
console.log('Fetch Error :-S', err);
failureCallback();
});
}
successCallBack(data) {
console.log(data)
}
failureCallback() {
alert("failure");
}
getCats(this.successCallBack.bind(this), this.failureCallback.bind(this));