Javascript 我如何知道我是否在路由器内?
我正在开发一个web浏览器扩展,可以呈现各种链接。这些链接可以在“应用程序”路径(扩展名中的Javascript 我如何知道我是否在路由器内?,javascript,reactjs,react-router,react-router-dom,Javascript,Reactjs,React Router,React Router Dom,我正在开发一个web浏览器扩展,可以呈现各种链接。这些链接可以在“应用程序”路径(扩展名中的app.html)内呈现,也可以从浏览器操作窗口(菜单栏中的扩展名按钮)呈现 应用程序定义了React路由器;弹出窗口不显示 在应用程序中呈现链接时,我可以使用: 从'react router dom'导入{Link}; // ... 福 但是,在弹出窗口中,这不起作用,因为我得到了错误: Invariant失败:不应在外部使用 这当然有道理。但我想通过助手函数或组件创建链接,如何确定我当前是否在路由器
app.html
)内呈现,也可以从浏览器操作窗口(菜单栏中的扩展名按钮)呈现
应用程序定义了React路由器;弹出窗口不显示
在应用程序中呈现链接时,我可以使用:
从'react router dom'导入{Link};
// ...
福
但是,在弹出窗口中,这不起作用,因为我得到了错误:
Invariant失败:不应在外部使用
这当然有道理。但我想通过助手函数或组件创建链接,如何确定我当前是否在路由器中
请注意,原则上我可以传递一个道具,明确告诉组件它是否是路由器的一部分,但这似乎非常详细。您可以通过尝试使用
useHistory
钩子获取历史对象来确定层次结构中是否有路由器组件
import { useHistory } from 'react-router-dom';
const Comp = () => {
const history = useHistory();
if(!history) {
// no router in hierarchy
}
}
很高兴能帮忙:-)