Żadnych ograniczonych globali

168

Używam React i Redux do tworzenia aplikacji internetowej, a kiedy zaczynałem projekt, otrzymałem to:

Line 13:  Unexpected use of 'location'  no-restricted-globals

Search for the keywords to learn more about each error.

Dużo szukam sposobu rozwiązania tego problemu, ale żadna ze znalezionych odpowiedzi nie pomogła mi, więc zwróciłem się do przepełnienia stosu.

Czy ktoś wie, jak naprawić ten błąd? Doceniam każdą pomoc, jaką mogę uzyskać.

Martin Nordström
źródło

Odpowiedzi:

408

Spróbuj dodać windowprzed location(tj window.location.).

Chasen Bettinger
źródło
15
To powinna być akceptowana odpowiedź. ESLint poprawnie informuje Cię, że piszesz słaby kod. Pozostałe dwie odpowiedzi, w tym zaakceptowana odpowiedź, nie rozwiązują problemu, a jedynie uniemożliwiają ESLint poinformowanie Cię o tym.
eMike Wallace
Rzeczywiście poprawnym sposobem naprawienia tego jest prefiksowanie lokalizacji za pomocą window.location. Z jakiegoś powodu zespół CRA uważa obecnie za location„mylącą przeglądarkę globalną”. Powiedziałbym, że jeśli używasz CRA i nie wiesz o obiekcie lokalizacji, jesteś na ziemi niczyjej. Może po prostu chcą, aby czytanie adresu URL było irytujące, co byłoby zrozumiałe ...
Devin G Rhode
Stworzyłem problem na githubie, pytając, czy locationobiekt naprawdę jest mylącą przeglądarką globalną, dlatego potrzebuję window.prefiksu wszędzie ... github.com/facebook/create-react-app/issues/7733
Devin G Rhode
5

To proste i może nie najlepsze rozwiązanie, ale działa.

W wierszu powyżej linii, w której pojawia się błąd, wklej to:

// eslint-disable-next-line no-restricted-globals

Martin Nordström
źródło
5
Dobre rozwiązanie dla projektu tworzenia-reagowania-aplikacji podczas wstawiania pracowników usług jako obiektów blob. Głosowano za.
adc
7
To nie rozwiązuje problemu, a jedynie ukrywa ostrzeżenie.
Vladimir Nul
0

Być może mógłbyś spróbować przekazać lokalizację do komponentu jako rekwizyt. Poniżej używam ... otherProps. To jest operator rozprzestrzeniania i jest prawidłowy, ale niepotrzebny, jeśli przekazałeś swoje rekwizyty wyraźnie, że jest tam tylko jako miejsce do celów demonstracyjnych. Również badanie destrukturyzacji, aby zrozumieć, skąd ({lokalizacja}) się wzięło.

import React from 'react';
import withRouter from 'react-router-dom';

const MyComponent = ({ location, ...otherProps }) => (whatever you want to render)


export withRouter(MyComponent);
Steven Sheaves
źródło
-2
/* eslint no-restricted-globals:0 */

to inne alternatywne podejście

Dan Krueger
źródło