Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法设置本机获取的状态_Android_React Native_Fetch - Fatal编程技术网

Android 无法设置本机获取的状态

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 = ({

您好,我尝试设置fetch调用的状态,如下所示:

    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 lot

Fetch是异步的,因此它将在运行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));