反应路由器错误:您不应该在路由器之外使用路由

Chr*_*amp 3 javascript ecmascript-6 reactjs react-router

我只是在我的 React 应用程序中做一些基本的路由,我之前已经这样做了,所以我很困惑为什么它现在不起作用。

我得到的错误说: You should not use <Route> or withRouter() outside a <Router>

我确定这是超级基本的所以感谢你和我一起裸露!

import React from 'react'
import { Route } from 'react-router-dom'
import { Link } from 'react-router-dom'
import * as BooksAPI from './BooksAPI'
import BookList from './BookList'
import './App.css'

class BooksApp extends React.Component {
  state = {
    books: []
  }

  componentDidMount() {
    this.getBooks()
  }

  getBooks = () => {
    BooksAPI.getAll().then(data => {
      this.setState({
        books: data
      })
    })
  }


  render() {
    return (
      <div className="App">
        <Route exact path="/" render={() => (
          <BookList
            books={this.state.books}
          />
        )}/>
      </div>
    )
  }
}

export default BooksApp
Run Code Online (Sandbox Code Playgroud)

Tom*_*zyk 5

您需要为 react-router 设置上下文提供程序

  import { BrowserRouter, Route, Link } from 'react-router-dom';

  // ....

  render() {
    return (
      <BrowserRouter>
        <div className="App">
          <Route exact path="/" render={() => (
            <BookList
              books={this.state.books}
            />
          )}/>
        </div>
      </BrowserRouter>
    )
  }
Run Code Online (Sandbox Code Playgroud)

旁注 -BrowserRouter应该放在您的应用程序的顶层,并且只有一个孩子。