React-router 无法单独显示每个组件

React-router having trouble display each of the components on its own

我正在迁移到 ReactRouter v4,但事实证明它对我来说很麻烦。我在 app.js 中有一个文件,我试图在其中设置一个简单的路由系统。

import React, { Component } from 'react';
import { Router, Route, IndexRoute, hashHistory, Redirect } from 'react-router';
import LoginPage from './LoginPage';
import NavigationBar from './NavigationBar';

class App extends Component {
  render() {
    return (
      <Router history={history}>
        <Route exact path='/' component={NavigationBar}></Route>
        <Route exact path='/login' component={LoginPage}></Route>
      </Router>
    );
  }
}

代码编译得很好,但由于某些原因在浏览器上,当 url 为 localhost:3000/login

时,导航栏而不是登录页面显示

The image of the nagivation bar showing instead of the login

我原本打算将登录显示在 /login 上,将导航栏显示在 / 上,但导航栏同时显示在 /login 和 / 上。 我一直在关注 react-router training guide here 上的示例,但我似乎无法弄清楚我做错了什么。

也许这只是您的 post 中的错字,但您扩展的是 Compoent 而不是 Component。如果您的代码中发生这种情况,我猜您会看到比获取错误组件更糟糕的问题。

我更喜欢 BrowserRouter(我不必支持旧版浏览器),但我让你的代码像这样工作:

import React, { Component } from 'react';
import { Route } from 'react-router';
import { HashRouter as Router } from 'react-router-dom';

import LoginPage from './LoginPage';
import NavigationBar from './NavigationBar';

class App extends Component {
  render() {
    return (
      <Router>
        <div>
          <Route exact path='/' component={NavigationBar}></Route>
          <Route exact path='/login' component={LoginPage}></Route>
        </div>
      </Router>
    );
  }
}

您必须安装 react-router-dom 才能将此代码添加到 运行。

正在访问 http://localhost:3000/#/login, I get the Login component. If you change HashRouter to BrowserRouter, you can see your component render at http://localhost:3000/login