Я обнаружил ошибку в своем коде, я вызывал функцию вне моего обещания получения, в результате чего приложение иногда не обновлялось при обновлении списка поиска пользователей. Таким образом, в последней функции .then я не уверен, как ссылаться на функцию this.important (this.importantarguments), как обычно, когда они находятся вне запроса на выборку. В этом формате они приводят к неопределенности.

sendfriendrequest = (e, friend) => {
        console.log("You want to be friends with: " + friend);
        let thetitleofsomeonewewanttobecloseto = friend;
        let username = this.state.username;
        fetch(currentrooturl + 'users/requestfriendship', {
                method: "POST",
                headers: {
                    'Accept': 'application/json',
                    'Content-Type': 'application/json'
                },
                credentials: 'same-origin',
                body: JSON.stringify({
                    thetitleofsomeonewewanttobecloseto, username
                })
            })
            .then(function(response) {
                // You parse the data into a useable format using `.json()`
                return response.json();
            })
            .then(function(data) {
                // `data` is the parsed version of the JSON returned from the above endpoint.
                // console.log("data: " + data);  // { "userId": 1, "id": 1, "title": "...", "body": "..." }
            console.log(data);
                return data;
            })
            .catch(error => { console.log(error);
            })
            .then(function(data) {
                this.limitedsearch(this.state.username, this.state.searchusers[0].length);
            })


        e.preventDefault(console.log(thetitleofsomeonewewanttobecloseto));
        // research users to update list
        // this.limitedsearch(this.state.username, this.state.searchusers[0].length);
    }
0
Jesse Thompson 21 Дек 2019 в 04:52

1 ответ

Перед функцией извлечения вы можете сохранить ссылку на this, а затем в then() вы можете использовать эту ссылку ...

sendFriendRequest = (e, friend) => {
    /* some code here */
    let self = this; // Reference to this
    fetch(/* some function arguments here */)
        /* some then()s here */
        .then(function(data) {
            self.limitedsearch(self.state.username, self.state.searchusers[0].length);
            self = null; // Destroy reference to avoid memory leaks
        })

};
0
Kwame Opare Asiedu 21 Дек 2019 в 02:02