2015-10-30 41 views
2

我收到以下錯誤,而使用反應路由器: -陣營 - 路由器1.0.0未捕獲的錯誤:違反不變:元素類型無效

誰能告訴我在哪裏,我錯了?不可違反:元素類型無效:預期爲字符串(對於內置組件)或類/函數(對於複合組件),但得到:對象。

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')); 
+0

你的'Login'組件是怎麼樣的? –

+0

更新的登錄組件 – Kunal

+0

可能是因爲缺少'module.exports = Login;'和'module.exports = App;'行。但我可能是錯的。 –

回答

3

以下行解決了我的錯誤

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

非常感謝。這非常微妙:路由器不是ReactRouter。它是ReactRouter.Router。我在這上面殺了3個小時。每次掃描都很容易被瀏覽! – Kushal

1

Router是在1.0.0 API命名出口:

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

如果我在上面加上它會給出錯誤:Uncaught SyntaxError:意外的標記{ – Kunal

2

首先對不起我的英語不好。 我有同樣的問題,幾個小時後,一個修復程序如何:

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 - 在這之後,你可能會有像「本地主機:3000 /#/?_ k = ckuvup」這樣的url問題。那麼,這樣做:

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')); 

...和閱讀HERE明白爲什麼要這樣做方式

做完所有這些事情後,也許你會遇到一些麻煩,當你服務這與吞噬服務器F或例子。我建議看看here

相關問題