没有限制全局变量

Mar*_*röm 112 javascript reactjs eslint react-router

我正在使用React和Redux来开发一个webapp,当我启动我的项目时,我得到了这个:

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

Search for the keywords to learn more about each error.
Run Code Online (Sandbox Code Playgroud)

我搜索了很多关于如何解决它的问题,但我找到的答案都没有帮助我,所以我转向Stack溢出.

有谁知道如何解决这个错误?我很感激能得到的所有帮助.

Cha*_*ger 290

尝试添加window之前location(即window.location).

  • 这应该是公认的答案.ESLint正确地告诉您,您正在编写弱代码.其他两个答案,包括已接受的答案,并没有解决问题,只是禁止ESLint告诉你它. (12认同)
  • 事实上,解决这个问题的正确方法是在 location 前面加上 window.location 前缀。由于某种原因,CRA 团队目前认为“位置”是“令人困惑的浏览器全局”。我想说,如果您正在使用 CRA 并且不知道位置对象,那么您就处于无人区。也许他们只是想让阅读网址变得烦人,这是可以理解的...... (2认同)

Mar*_*röm 9

这是一个简单的,也许不是最好的解决方案,但它有效。

在您收到错误的行上方的行中,粘贴以下内容:

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

  • 这并不能解决问题,只是隐藏了警告。 (14认同)
  • 将 Service Worker 内联为 blob 时,是 create-react-app 项目的良好解决方案。赞成。 (5认同)

小智 5

使用react-router-dom库。

useLocation如果您使用功能组件,请从那里导入钩子:

import { useLocation } from 'react-router-dom';

然后将其附加到变量:

Const location = useLocation();

然后就可以正常使用了:

location.pathname

PS:返回的location对象只有五个属性:

{ hash: "", key: "", pathname: "/" search: "", state: undefined__, }

  • 这个答案与问题无关。 (2认同)