javascript - react 路由器错误 : You should not use Route outside of Router

标签 javascript reactjs ecmascript-6 react-router

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

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

我敢肯定这是 super 基础的,所以感谢您与我分享!

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

最佳答案

你需要为 react-router 设置 context provider

  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>
    )
  }

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

关于javascript - react 路由器错误 : You should not use Route outside of Router,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50545268/

相关文章:

javascript - 将 'Marked' 的渲染输出 react 为文本

angularjs - 如何将 Angular $resource 工厂(不是服务)转换为 ES6

javascript - 使用 vanilla javascript 复制 jQuery 的 .next ('a' )

javascript - 每个图像都可以预览的功能

javascript - 是否有允许在 Javascript 中使用 Android 的 9-patches 的工具?

javascript - React - 安装 react 表

javascript - key 是唯一的,但仍然得到 "Encountered two children with the same key"

javascript - 将十六进制字符串转换为 BYTE 数组 JS

javascript - 使用对象变量屏蔽参数时,转译代码会抛出错误

javascript - ES6 避免那个/自己