错误: useRoutes() 只能在 <Router> 组件的上下文中使用
2020-10-17
6646
我正在使用 System JS 动态添加 React 模块,效果很好!
除非我尝试使用已加载模块中的 react-router 上下文。
"react-router-dom": "6.0.0-beta.0"
您可以在 React 组件资源管理器中看到,肯定有一个
<Router>
组件作为祖先。
路由在主机应用程序中运行良好 - 仅当从动态加载的组件调用时才会中断。
我是 React 新手,所以我可能对如何向深度嵌套或动态加载的子项提供上下文做出了错误的假设。
2个回答
问题是由于模块包中存在
react-router-dom
库。
当动态模块加载时,它使用的是自己的库版本,而不是主机应用程序提供的版本。
我将其添加到我的 webpack/rollup 配置中的
externals
,问题就解决了。
我现在可以让主机应用程序内的插件管理子路由! =]。
Jeremy
2020-10-18
将
<App />
包装在
<Router> </Router>
内将解决此问题。
import { BrowserRouter as Router } from "react-router-dom";
<Router>
<App/>
</Router>
Suprabhat Kumar
2021-12-25