未捕获错误:您不应在<router>

时间:2017-09-30 17:48:16

标签: ruby-on-rails react-router react-rails

我正在使用react-rails gem(v 2.3)和react-router-dom(v 4.2.2)并将我的根组件App安装在我的根Rails路由上。

这就是它的安装方式:

<%= react_component("App") %>

这是组件本身:

const Router     = ReactRouterDOM.BrowserRouter,
  Route      = ReactRouterDOM.Route;

class App extends React.Component{
  render() {
    return (
      <Router>
        <Route path="/" component={Index}>
        </Route>
      </Router>
    );
  }
}

我一直收到以下错误:

Uncaught Error: You should not use <Route> or withRouter() outside a <Router>

我是否在上面的路由器组件中没有使用Route组件? 索引组件可能有错误吗?

提前感谢您的任何帮助:)

2 个答案:

答案 0 :(得分:1)

也许这不是正确的错误.. 尝试覆盖你的应用程序

class App extends React.Component{
  render() {
    return (
      <Router>
        <Route path="/" component={Index} />
      </Router>
    );
  }
}

或在Route

中包裹你div
class App extends React.Component{
  render() {
     return (
       <Router>
         <div>
            <Route path="/" component={Index} />
         </div>
       </Router>
    );
  }
}

这是docs

答案 1 :(得分:0)

我遇到了类似的错误消息,但是在不同的上下文中。我在这里发布我的修复,以防其他人遇到我所做的相同情况。

我的问题是我有一个添加了两个元素的App.js,但我忘了更新我的index.js文件。它曾经是:

ReactDOM.render(<BrowserRouter><App /></BrowserRouter>, document.getElementById('root')) 

我更新为:

import { BrowserRouter } from 'react-router-dom'

还必须添加以下import语句:

Autowired