React路由器始终呈现'/'路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React路由器始终呈现'/'路径相关的知识,希望对你有一定的参考价值。

我正在尝试使用v4 react路由器,但路由器总是呈现初始路径('/')。我正在使用

react: ^16.2.0

react-dom: ^16.2.0

react-router-dom: ^4.2.2

当我尝试渲染/#/ account时,它会呈现Home而不是Account。

import React from "react"
import ReactDOM from "react-dom"
import { BrowserRouter as Router, Route } from 'react-router-dom'

import Home from "./components/Home/Home";
import Account from "./components/Account/Account";
import Layout from "./components/Layout";

const app = document.getElementById('app');

ReactDOM.render(
  <Router>
      <div>
        <Route exact path="/" render={() => (<div>Home</div>)} />
        <Route path="/account" render={() => (<div>Account</div>)} />
      </div>
  </Router>,
  app
)
答案

解决这个问题的方法之一是使用来自react-router-dom的<Switch>,你可以像下面这样导入它:

import {Switch} from 'react-router-dom';

然后将你的qazxsw poi包装在qazxsw poi中我觉得将<Route>放在最后并且给出默认组件也是个好主意:

<Switch>

您可以阅读更多关于"/" <Router> <div> <Switch> <Route path="/account" render={() => (<div>Account</div>)} /> <Route exact path="/" render={() => (<div>Home</div>)} /> <Route component={NoMatch}/> </Switch> </div> </Router> 的内容

另一答案

使用<Switch>的另一种方法是Here,它使用URL的哈希部分(即window.location.hash)来保持UI与URL同步。

见:<BrowserRouter>

因此,在您的示例中,您只需导入<HashRouter>

https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/api/HashRouter.md

以上是关于React路由器始终呈现'/'路径的主要内容,如果未能解决你的问题,请参考以下文章

React 路由动态加载

react-router-dom 中的 Switch 语句始终加载 Home 路由,没有其他路由

React Router 渲染空白页

react 路由使用useRoutes Api

react 路由使用useRoutes Api

react 路由使用useRoutes Api