Pas de globaux restreints

168

J'utilise React et Redux pour développer une application web et quand j'ai démarré mon projet, j'ai obtenu ceci:

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

Search for the keywords to learn more about each error.

Je cherche beaucoup comment le résoudre, mais aucune des réponses que j'ai trouvées ne m'a aidé, alors je me suis tourné vers Stack overflow.

Quelqu'un sait-il comment corriger cette erreur? J'apprécie toute l'aide que je peux obtenir.

Martin Nordström
la source

Réponses:

409

Essayez d'ajouter windowavant location(ie window.location).

Chasen Bettinger
la source
15
Cela devrait être la réponse acceptée. ESLint vous informe correctement que vous écrivez du code faible. Les deux autres réponses, y compris la réponse acceptée, ne résolvent pas le problème mais empêchent seulement ESLint de vous en parler.
eMike Wallace
En effet, la bonne façon de résoudre ce problème est de préfixer l'emplacement avec window.location. Pour une raison quelconque, l'équipe de l'ARC considère actuellement locationun «navigateur global déroutant». Je dirais que si vous utilisez l'ARC et que vous ne connaissez pas l'objet de localisation, vous êtes dans le no mans land. Peut-être qu'ils veulent juste rendre la lecture de l'URL ennuyeuse, ce qui serait compréhensible ...
Devin G Rhode
J'ai créé un problème github demandant spécifiquement si l' locationobjet est vraiment un navigateur global déroutant, ayant donc besoin du window.préfixe partout ... github.com/facebook/create-react-app/issues/7733
Devin G Rhode
5

C'est une solution simple et peut-être pas la meilleure, mais cela fonctionne.

Sur la ligne au-dessus de la ligne, vous obtenez votre erreur, collez ceci:

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

Martin Nordström
la source
5
Bonne solution pour un projet create-react-app lors de l'incorporation de techniciens de service sous forme d'objets blob. Vote positif.
adc
7
Cela ne résout pas le problème, masque simplement l'avertissement.
Vladimir Nul
0

Vous pourriez peut-être essayer de transmettre l'emplacement dans le composant comme accessoire. Ci-dessous, j'utilise ... otherProps. C'est l'opérateur de diffusion, et il est valide mais inutile si vous avez explicitement passé vos accessoires, il est juste là comme espace réservé à des fins de démonstration. En outre, recherchez la déstructuration pour comprendre d'où vient ({location}).

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

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


export withRouter(MyComponent);
Steven Sheaves
la source
-2
/* eslint no-restricted-globals:0 */

est une autre approche alternative

Dan Krueger
la source