与basename冲突,并与build内的Redirect冲突

时间:2020-09-19 12:55:14

标签: reactjs react-router-dom

我与路由,BrowserRouter,通过页面的构建重定向存在一些冲突。

第一个检测到的问题是我是否未配置基本名称或

basename={'/'}  

然后,当我进行构建时,我得到了空白页。

现在,如果我放basename={window.location.pathname || ''}

<BrowserRouter basename={window.location.pathname || ''}>
    <App />
  </BrowserRouter>

然后,当我进行构建时,我的项目正常工作。

另一个冲突是,如果我放

    <Switch>
        <Redirect exact from="/" to="test" component={ test } />
        <Route path="/" exact component={ test } />
        <Route path="/test2" component={ test2 } />
        <Route path="/test3" component={ test3 } /
    </Switch>

我添加重定向,因为我希望默认情况下加载路径。它可以工作,但是当我进行构建时,我又得到了空白页。如果在构建工作完成后删除“重定向”页面,但默认情况下我没有路径。怎么了?

此外,似乎重定向有一个错误,因为每次我重新加载页面时,都会影响路径

Ej:“ localhost:3000 / test

当我重新加载页面时:

 "localhost:3000/test/test"

如果再次重新加载,我会得到:

 "localhost:3000/test/test/test and so on.

在我的package.json中,我已经配置了“主页”:“。”,就像许多相关论坛中所建议的那样。

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我认为这会有所帮助

 <BrowserRouter>   
    <Switch>
          <Redirect from="/" to="/test" exact/>
          <Route path ="/test" exact component ={test} />
          <Route path="/test2" component={test2} />
          <Route path="/test3" component={test3} />
      </Switch>
    </BrowserRouter>

您不需要此路线<Route path="/" exact component={ test } /> 您还需要在/之前添加test