Я использую React и Redux для разработки веб-приложения, и когда я начал свой проект, я получил следующее:

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

Search for the keywords to learn more about each error.

Я много ищу, как решить эту проблему, но ни один из ответов, которые я нашел, мне не помог, поэтому я обратился к переполнению стека.

Кто-нибудь знает как исправить эту ошибку? Я ценю любую помощь, которую могу получить.

Ответы (6)

Попробуйте добавить window перед location (т.е. window.location).

Используйте библиотеку response-router-dom.

Оттуда импортируйте хук useLocation, если вы используете функциональные компоненты:

импорт {useLocation} из 'response-router-dom';

Затем добавьте его в переменную:

Местоположение константы = useLocation ();

Затем вы можете использовать его как обычно:

location.pathname

P.S: возвращенный объект location имеет только пять свойств:

{хэш: "", ключ: "", путь: "/" поиск: "", состояние: undefined__,}

/* eslint no-restricted-globals:0 */

- еще один альтернативный подход

Просто разрушьте locaton следующим образом: ({location}).

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

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

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


export withRouter(MyComponent);

Это простое и, может быть, не лучшее решение, но оно работает.

В строке над строкой, в которой отображается сообщение об ошибке, вставьте следующее:

// eslint-disable-next-line без ограничений-глобальных

2022 WebDevInsider