首页 > 解决方案 > 为什么我会收到“意外使用 'location' no-restricted-globals”?

问题描述

在我的 reactjs 代码中,我得到了:

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

let path = location.pathname;

还在此组件中使用 react 路由器模块。如何修复此错误?

标签: javascriptreactjsreact-routereslint

解决方案


例如,在大多数/所有 Web 浏览器中location.reload(), 是其完全限定名称 的别名window.location.reload()

您可以通过打开开发工具窗格控制台并输入以下内容在浏览器中对其进行测试:

location.reload()

window.location.reload()

两者都会触发页面刷新。

ES Lint 警告实际上是在警告您您的代码依赖于此别名,因此将来代码可能会突然中断,这可能是因为该别名已被弃用或您的工具链的某些部分以某种方式运行所需的用法window.

在 JavaScript 中,由于变量阴影和闭包可能会发生奇怪的事情。可能location会在之后声明引用,然后对类似内容的引用location.reload()会中断,并显示诸如“没有此类方法重新加载”之类的消息。如果您调用完全限定名称,这将不太可能发生window.location.reload()


推荐阅读