如何解决您不应该在 Piral 中的 <Router> 之外使用 <Link>
在默认 piral 实例中调试我的 Pilet 时出现此错误:
const params = new URLSearchParams();
params.append('firstName','paul');
params.append('lastName','fred');
axios.post('/user',params);
奇怪的是下一个日志条目报告错误来自内部一个Uncaught Error: Invariant Failed: You should not use <Link> outside a <Router>
:
Router
我的pilet index.jsx:
react_devtools_backend.js:2430 The above error occurred in the <Context.Consumer> component:
in Link
in UnkNown
in Suspense (created by ErrorBoundary)
in ErrorBoundary
in UnkNown (created by Menu)
in li (created by MenuItem)
in MenuItem
in UnkNown (created by Menu)
in ul (created by MenuContainer)
in div (created by MenuContainer)
in div (created by MenuContainer)
in nav (created by MenuContainer)
in header (created by MenuContainer)
in MenuContainer
in UnkNown (created by Menu)
in Menu (created by Layout)
in div (created by Layout)
in Layout
in UnkNown (created by piralContent)
in piralContent (created by piralView)
in Router (created by browserRouter)
in browserRouter
in UnkNown (created by piralView)
in piralProvider (created by piralView)
in piralView (created by piral)
in piral
我的 piral 实例使用 import { Link } from 'react-router-dom'
const App = () => 'My pilet'
export function setup(app) {
app.registerPage('/my-pilet',App)
app.registerMenu(() => <Link to="/my-pilet">My Pilet</Link>)
}
提供的样板文件并且完全没有变化。它甚至有一个默认菜单项,可以正常工作而不会出错:
为什么我会收到此错误?
- 盗版 0.12.4
- 海盗 CLI 0.12.4
- 海盗 CLI Webpack 0.12.4
解决方法
您的设置一定有问题。如果出现此错误,则表示您的 Link
的路由上下文与应用外壳中的路由上下文不同。我怀疑您不共享 react-router-dom
。把它放在你的 Pilet 的 package.json 的 peerDependencies
中。
错误是不言自明的,您只需要将 与 Router 标签括起来。试试这个:
import { BrowserRouter as Router,Link } from 'react-router-dom'
const App = () => 'My pilet'
export function setup(app) {
app.registerPage('/my-pilet',App)
app.registerMenu(() => <Router> <Link to="/my-pilet">My Pilet</Link> <Router>)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。