6
votes

Pourquoi est-ce que j'obtiens une 'utilisation inattendue de' location 'no-restricted-globals'?

Dans mon code reactjs, j'ai obtenu:

const {
  children,
  location: { pathname },
} = this.props;

let path = location.pathname;

En utilisant également le module de routeur react dans ce composant. Comment corriger cette erreur?


0 commentaires

3 Réponses :


3
votes

Vous devriez essayer ce code

const {
  children,
  location: { pathname },
} = this.props;

let path = pathname;

Votre variable location n'a pas été définie dans ce code de bloc donc eslint pense que vous utilisez variable globale


0 commentaires

0
votes

Parce que eslint détecté location est un élément de window . Alors, essayez de renommer vos accessoires :

const {
  children,
  myLocation: { pathname },
} = this.props;

let path = myLocation.pathname;

Référence:


0 commentaires

6
votes

Dans la plupart / tous les navigateurs Web, location.reload () , par exemple, est un alias pour son nom complet window.location.reload () .

Vous pouvez le tester dans votre navigateur en ouvrant la console du volet des outils de développement et en saisissant:

window.location.reload()

et

location.reload()

Les deux déclencheront l'actualisation de la page.

L'avertissement ES Lint vous avertit effectivement que votre code repose sur cet alias, il est donc plausible qu'à l'avenir, le code puisse se briser soudainement, peut-être si l'alias est devenu obsolète ou si une partie de votre chaîne d'outils a fonctionné d'une manière qui nécessitait l'utilisation de window.

En JavaScript, des choses étranges peuvent se produire en raison de variable- ombrage et fermeture . Il est possible qu'une référence location puisse être déclarée après et qu'une telle référence à quelque chose comme location.reload () se briserait avec un message tel que "no such method reload ". Ce serait moins susceptible de se produire si vous appeliez le nom complet window.location.reload().


0 commentaires