【发布时间】:2021-05-28 17:58:05
【问题描述】:
我创建了一个 React 应用程序,它将由 /example-path 提供服务。我在package.json 中这样定义它:
"homepage":"/example-path"
到目前为止它一直有效,但现在我想使用react-router-dom 添加路由,它错误地将/example-path 检测为 URL 的一部分。
这是我的代码:
<Router>
<Switch>
<Route path="/product/:id" children={<DisplayProduct />} />
</Switch>
</Router>
很遗憾,react-router-dom 试图匹配完整的 URL /example-path/product/10。怎么可能避免呢?是否可以通过某种方式访问homepage 变量?
我可以使用<Router basename="/example-path">,但是那样的话,这个参数是重复的。我只想在一个地方定义它。
【问题讨论】:
-
您无需访问 Package.json 即可读取您的主页路由。您想向 Package.json 添加不属于它的关注点。您可以使用带有此可配置参数的 config.js 并在任何您喜欢的地方读取它。
-
@JoelBonetR 在 react 项目中,项目根路径确实在 package.json 的主页参数中定义。那不是我的选择
-
hmm 不,为什么要在 package.json 中添加项目根路径?如果您设置了脚本以简化运行,例如“parcel index.js”或类似,您的 package.json 中只有您的应用程序的入口点
-
@JoelBonetR 否则,如果我将我的应用程序放到
/example-path/...应用程序会尝试从/static/而不是/example-path/static/...加载资产 -
所以你以一种不好的方式链接/需要资源,现在你想添加完整路径...... example-path 必须是你的应用程序的根路径,所以当你链接资产时,你必须使用相对路径'./static/asset'。 *注意斜线前的点
标签: javascript reactjs react-router react-router-dom