• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

React - problem ze state przy odmontowanym komponencie

VPS Starter Arubacloud
0 głosów
141 wizyt
pytanie zadane 31 grudnia 2019 w JavaScript przez `Krzychuu Stary wyjadacz (13,940 p.)

Witam,

mam problem z warningiem: Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function. w konsoli wyskakuje że błąd wyskakuje przy komponencie:

import React, {useEffect} from "react";
import axios from 'axios';
import { Link } from "react-router-dom";
import ApiErrors from "../../../components/errors/apiErrors";
import {Button} from "@material-ui/core";
import { Settings, NetworkCheck, SentimentVeryDissatisfied } from "@material-ui/icons";

const ApiErrorsControl = ({ children }) => {
    const [ error, setError ] = React.useState({error: false});

    useEffect(() => {
        axios.interceptors.response.use(response => {
            return response;
        }, error => {
            let errorStatus = false;

            if(error.response) {
                if(error.response.status >= 500) {
                    errorStatus = 500;
                } else if(error.response.status === 403) {
                    errorStatus = 403;
                }
            } else {
                errorStatus = "Network";
            }

            setError({error: errorStatus});
            return Promise.reject(error);
        });
    }, []);

    return (
        <div>
            {
                error.error
                    ? <div>
                        {
                            error.error === 500 && <ApiErrors
                                icon={(<Settings />)}
                                title="Brak połączenia z serwerem"
                                description="Przepraszamy mamy chwilowe problemy z serwerem! Pracujemy nad rozwiązaniem problemu."
                                actions={(<Button color="primary" variant="outlined" component={Link} to="/">strona główna</Button>)}
                            />
                        }

                        {
                            error.error === 403 && <ApiErrors
                            icon={(<SentimentVeryDissatisfied />)}
                            title="Brak uprawnień"
                            description="Twoje konto nie posiada odpowiednich uprawnień do przeglądania tej strony!"
                            actions={(<Button color="primary" variant="outlined" component={Link} to="/">strona główna</Button>)}
                            />
                        }

                        {
                            error.error === "Network" && <ApiErrors
                                icon={(<NetworkCheck />)}
                                title="Brak połączenia z internetem"
                                description="Twój komputer jest odłączony od sieci!"
                            />
                        }
                    </div>
                    : <div>{ children }</div>
            }
        </div>
    );
};

export default ApiErrorsControl;

błąd wyskakuje gdy pierwszy interceptor wyrzuca niezalogowanego użytkownika (po błędzie 401 z api) do strony z logowaniem, szukałem w internecie jakiegoś rozwiązania ale żadne nie działało :/

1 odpowiedź

0 głosów
odpowiedź 31 grudnia 2019 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)

To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function - próbowałeś tego?

komentarz 31 grudnia 2019 przez `Krzychuu Stary wyjadacz (13,940 p.)
szukałem już wcześniej ale nie znalazłem rozwiązania :/

Podobne pytania

+1 głos
1 odpowiedź 187 wizyt
0 głosów
0 odpowiedzi 101 wizyt
0 głosów
1 odpowiedź 267 wizyt
pytanie zadane 16 stycznia 2020 w JavaScript przez Exoduss Nowicjusz (120 p.)

93,005 zapytań

141,971 odpowiedzi

321,249 komentarzy

62,341 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...