Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我如何知道我是否在路由器内?_Javascript_Reactjs_React Router_React Router Dom - Fatal编程技术网

Javascript 我如何知道我是否在路由器内?

Javascript 我如何知道我是否在路由器内?,javascript,reactjs,react-router,react-router-dom,Javascript,Reactjs,React Router,React Router Dom,我正在开发一个web浏览器扩展,可以呈现各种链接。这些链接可以在“应用程序”路径(扩展名中的app.html)内呈现,也可以从浏览器操作窗口(菜单栏中的扩展名按钮)呈现 应用程序定义了React路由器;弹出窗口不显示 在应用程序中呈现链接时,我可以使用: 从'react router dom'导入{Link}; // ... 福 但是,在弹出窗口中,这不起作用,因为我得到了错误: Invariant失败:不应在外部使用 这当然有道理。但我想通过助手函数或组件创建链接,如何确定我当前是否在路由器

我正在开发一个web浏览器扩展,可以呈现各种链接。这些链接可以在“应用程序”路径(扩展名中的
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
     }
}

很高兴能帮忙:-)