首页 > 解决方案 > React Router 未路由到 Route 元素中指定的路径

问题描述

在以下带有两个路由的 React 应用程序中,URL http://myapp正确路由到 Layout 组件。但是,URL http://myapp/login也路由到 Layout 组件而不是 Login。如果我将 path="/login" 更改为 "/signin",它会正确路由到 Login 组件。

React Router 中的“/login”路径有什么特别之处吗?还是我设置此路由的方式有误?

import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { AppContainer } from 'react-hot-loader';
import { BrowserRouter, Switch, Route } from 'react-router-dom';
import { Layout } from './components/Layout';
import { NotFound } from './components/NotFound';
import { Login } from './components/Login';

//Redux store
import { Provider } from "react-redux";
import store from "./store";

function renderApp() {

  ReactDOM.render(
    <Provider store={store}>
      <BrowserRouter basename="/">
        <Switch>
          <Route exact path="/" component={Layout} />
          <Route exact path="/login" component={Login} />
          <Route component={NotFound} />
        </Switch>
      </BrowserRouter>
    </Provider>,
    document.getElementById('react-app')
  );

}

renderApp();

标签: reactjsreact-router

解决方案


因此,看来您必须小心为路由匹配正确指定了 basename 属性。"/" 匹配 "/login" 但 "~/" 不正确。考虑是否需要 basename 属性,如果需要,请仔细考虑其值。


推荐阅读