繁体   English   中英

React-Router 1.0.0未捕获的错误:始终违反:元素类型无效

[英]React-Router 1.0.0 Uncaught Error: Invariant Violation: Element type is invalid

使用react-router时出现以下错误:-

谁能告诉我我错了吗?

未捕获的错误:始终违反:元素类型无效:预期为字符串(对于内置组件)或类/函数(对于复合组件),但得到了:对象。

var React = require('react');
var ReactDOM  = require('react-dom');
var Router = require('react-router');
var Route = Router.Route;


var App = React.createClass({
  render: function(){
    return (
  <div>
  <h1>Welcome</h1>
    {this.props.children}
  </div>
);
}
});

var Login = React.createClass({
  render: function(){
    return (    
      <div className="large-3 medium-6 large-centered medium-centered columns"> 
        <h1>Login Page</h1>
      </div>

  ) }
});

ReactDOM.render((
  <Router>
    <Route path="/" component={App}>
      <Route path="login" component={Login}/>      
    </Route>
  </Router>
   ), document.getElementById('content'));

以下几行解决了我的错误

var ReactDOM = require('react-dom');
var ReactRouter = require('react-router');
var Router = ReactRouter.Router;
var Route = ReactRouter.Route;

首先,对不起我的英语不好。 我遇到了同样的问题,几个小时后,该如何解决:

1-您应该导入正确的模块,例如Saroj说:

var ReactDOM = require('react-dom');
var ReactRouter = require('react-router');
var Router = ReactRouter.Router;
var Route = ReactRouter.Route;
var IndexRoute = ReactRouter.IndexRoute;

2-之后,URL可能会出现问题,例如“ localhost:3000 /#/?_ k = ckuvup”。 因此,请执行以下操作:

npm install history --save

...然后

var createBrowserHistory = require('history/lib/createBrowserHistory');

并为此更改路由器配置:

ReactDOM.render((
  <Router history={createBrowserHistory()}>
    <Route path="/" component={App}>
      <Route path="login" component={Login}/>      
    </Route>
  </Router>
), document.getElementById('content'));

...并在这里阅读以了解为什么这样做

完成所有这些操作后,例如在使用gulp服务器提供服务时,可能会遇到麻烦。 我建议在这里看看。

Router1.0.0 API中的命名导出:

var {Router, Route} = require('react-router')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM