Без обмежених глобалів


168

Я використовую React і Redux для розробки веб-сайту, і коли я запустив свій проект, я зрозумів:

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

Search for the keywords to learn more about each error.

Я багато шукав, як її вирішити, але жодна із знайдених відповідей мені не допомогла, тому я звернувся до переповнення стека.

Хтось знає, як виправити цю помилку? Я ціную всю допомогу, яку можу отримати.

Відповіді:


408

Спробуйте додати windowраніше location(тобто window.location).


15
Це має бути прийнятою відповіддю. ESLint правильно повідомляє вам, що ви пишете слабкий код. Два інших відповіді, включаючи прийняту відповідь, не вирішують проблему, а лише забороняють ESLint розповідати вам про неї.
eMike Wallace

Дійсно, правильний спосіб виправити це - префікс розташування за допомогою window.location. Чомусь команда CRA наразі вважає location"заплутаним браузер глобальним". Я б сказав, що якщо ви використовуєте CRA і не знаєте про об'єкт розташування, ви перебуваєте в землі, яка не є людиною. Можливо, вони просто хочуть зробити прикро читання URL-адреси, що було б зрозуміло ...
Devin G Rhode

Я створив проблему github, спеціально запитуючи, чи справдіlocation об'єкт є заплутаним глобальним браузером, тому потрібен префікс скрізь ... github.com/facebook/create-react-app/isissue/7733window.
Devin G Rhode

5

Це просте і, можливо, не найкраще рішення, але воно працює.

У рядку над рядком ви отримаєте помилку, вставте це:

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


5
Гарне рішення для проекту "створити-реагувати" на додаток, коли в сервісних службовцях закладаються краплі. Отримано.
ад'ютант

7
Це не вирішує питання, просто приховує попередження.
Володимир Нул

0

Можливо, ви можете спробувати передати місцеположення в компонент як опору. Нижче я використовую ... otherProps. Це оператор розповсюдження і є дійсним, але непотрібним, якщо ви прямо перейшли в реквізит, він просто там, як власник місця для демонстраційних цілей. Крім того, дослідницька деструктурація, щоб зрозуміти, звідки ({location}) походить.

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

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


export withRouter(MyComponent);

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.