反应路由器和基本路线消失

问题描述 投票:1回答:1

我编写了一个React应用,在其中我使用react-router-dom和Link and Route对,如

<Link to="/subpath"> <Route path="/subpath">

<Link to="/basepath/subpath"> <Route path="/basepath/subpath">

在开发中,带有和不带有/ basepath的链接和路由都可以正常工作。但是,在npm run build之后,只有第一个基本URL加载有效。我对应用程序执行的任何操作都会导致基本路径从URL中消失。例如,如果我单击a

<Link to="/subpath">

<Link to="/basepath/subpath">,两者都应该带我去

[https://domain/basepath/subpath,我结束于

https://domain/subpath

该应用程序可以继续工作,但是无法再找到图像,例如页面刷新自然会失败。

我已经尝试了从互联网上发现的所有可能影响此结果的内容,例如将基本名称添加到BrowserRouter,将主页设置为package.json,使用PUBLIC_URL进行构建,并将基本路径添加到每个Link and Route标签。 (我什至尝试两次在Link标记中提供基本路径,但是两个基本路径都从URL中消失了。:-))

我如何获得React Router以将基本路径保留在URL中?

编辑:链接路径示例对:

<Link to={"/somepath/path/" + someId}>
<img  src={"https://domain/somepath/" + image + ".jpg"} />
</Link>

<Route path="/somepath/path/:someId">
<ShowImage />
</Route>

链接和路由路径也可以不带/ somepath,即。 “ / path / ...”,在开发中没有区别,但在生产中都没有作用。点击链接应使浏览器转到https://domain/somepath/path/someId,但它去https://domain/path/someId该应用程序和路由似乎工作正常,接下来显示ShowImage。但是,与此同时,图像源显然变得https://domain/image.jpg因为ShowImage无法从相同的源地址找到相同的图像。

编辑2:

路由器结构。

   <Router>
          <Switch>
            <Route path="/somepath/:someId">
              <ShowImage />
            </Route>
            <Route path="/">
              <ShowBase />
            </Route>
          </Switch>
    </Router>

ShowBase和ShowImage代码以显示图像。

<img src={"https://domain/basepath/" + image + ".jpg"} />

ShowImage history.push(带有/不带有/ basepath)和按钮处理。

function handleClick(event) {
    history.push("/");
  }
    <button onClick={handleClick}>
      Back
    </button>
reactjs router
1个回答
0
投票

使用重定向

[如果遇到问题,您尝试在URL中放入一个图像ID,然后转到带有该图像ID的“基本路径”。 (并在组件中获取参数并显示图像)

您可以这样使用重定向

<Redirect exact from="/:id" to="/basepath/:id" />
© www.soinside.com 2019 - 2024. All rights reserved.