我有一个组件想要显示在除根路径之外的所有路径上。因此,我没有提供 Route
组件的所有路径,而是这样写的:
<Route exact path={/^\/.+$/} component={() =>
<div><img src="../../../assets/AndreyBogdanov2.jpg" className="me" /></div>
} />
该正则表达式匹配开头斜杠后面有任何字符的所有字符串。它按预期工作,但是,在控制台中我看到一个错误:
Warning: Failed prop type: Invalid prop `path` of type `regexp` supplied to `Route`, expected `string`.
in Route (created by App)
in App
in Router (created by BrowserRouter)
in BrowserRouter
并不是我在提示,而是我想知道,它是如何工作的?
在 path
属性的文档中,它说它需要是 path-to-regexp
理解的任何 URL,并且在 path-to -regexp
的文档,它说 regex 是一个有效的参数。所以基本上,组件的 PropTypes
在遇到字符串以外的内容时会抛出错误。
最佳答案
这是因为它只能接受字符串值。您还需要插入 path-to-regexp
可以读取的内容,如 React Router Training 中所述。 。您可以在其存储库 here 中查找如何编写有效的正则表达式.
关于regex - 为什么react-router正确处理正则表达式 `path`,但同时抛出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50438628/