2017-02-26 43 views
1

雖然改寫ES6語法的一些組件我的陣營路由器開始拋出以下錯誤:陣營路由器3.0.2 + ES6:React.createElement:類型無效

Uncaught Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in. Check the render method of `Navicon`. 

該錯誤只彈簧,如果我包括<Link>組件我Navicon組件內部,它看起來像這樣:

import React from 'react'; 
import Link from 'react-router'; 
import './navicon.css'; 

class Navicon extends React.Component { 
    constructor(props) { 
    super(props) 
    } 

    render() { 
    return (
     <div className='navicon-container' tabIndex='0'> 
     <div className={'dropdown'}> 
      <Link to={'/'}>Hello</Link> 
     </div> 
     </div> 
    ) 
    } 
} 

export default Navicon; 

,其安裝我的路由器的組件看起來是這樣的:

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import { Router, Route, browserHistory, IndexRoute } from 'react-router'; 
import App from './components/App'; 
import Home from './components/Home'; 
import About from './components/About'; 
import './main.css'; 

ReactDOM.render(
    <Router history={browserHistory}> 
    <Route component={App}> 
     <Route path='/' component={Home} /> 
     <Route path='/about' component={About} /> 
    </Route> 
    </Router>, 
    document.getElementById('app') 
); 

我正在使用"react-router": "^3.0.2"

有沒有人有任何想法可能會跳閘此錯誤?當我使用React.createClass()時,這個錯誤從未出現過,所以我感到困惑。

回答

0

嗯,好像是,由於在反應路由器組件出口的語法,一個顯然必須使用:

// import Link from react-router <- this doesn't work 
import {Link} from react-router // <- this does 

那個小變化解決了錯誤。