2016-03-28 31 views
0

我不明白为什么下面的代码在标题中产生错误。我检查了类似的问题,但我没有发现它们有帮助。反应:Uncaught不变违规:ReactDOM.render():无效的组件元素

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import { Router, Route, IndexRoute, browserHistory } from 'react-router'; 
import { createHashHistory } from 'history'; 

import Menu from './pages/Menu'; 
import BookShelf from './pages/BookShelf'; 
import BorrowBook from './pages/BorrowBook'; 

const App = React.createClass({ 
    contextTypes: { 
    router: React.PropTypes.object.isRequired 
    }, 
    render() { 
    return (
     <Menu /> 
    ); 
    } 
}); 

ReactDOM.render((
    <Router history={browserHistory} onUpdate={() => window.scrollTo(0, 0)}> 
    <Route path="/" component={App}/> 
    <Route path="/menu" component={Menu} /> 
    <Route path="/bookshelf" component={BookShelf} /> 
    <Route path="/borrowbook/:bookId" component={BorrowBook} /> 
    </Router>, 
    document.getElementById('app') 
)); 
+2

为什么在ReactDOM.render的两个参数周围都有一对额外的括号? –

+0

正如@Liongold所说,你的parens在错误的地方,所以你通过一个参数而不是2. – azium

+0

哦,狗屎,谢谢 – hellogoodnight

回答

2
ReactDOM.render((// extra parenthesis here 
    <Router history={browserHistory} onUpdate={() => window.scrollTo(0, 0)}> 
    <Route path="/" component={App}/> 
    <Route path="/menu" component={Menu} /> 
    <Route path="/bookshelf" component={BookShelf} /> 
    <Route path="/borrowbook/:bookId" component={BorrowBook} /> 
    </Router>, 
    document.getElementById('app') 
)); // extra parenthesis here 

额外的括号正在它,这样你实际上是传递一个参数,而不是两个。

相关问题