2015-06-22 37 views
17

我試圖使用反應路由器,但是當我寫一個簡單的路線不工作,並在控制檯顯示遺漏的類型錯誤:無法讀取屬性「toUpperCase」的未定義。反應路由器遺漏的類型錯誤:無法讀取屬性「toUpperCase」的未定義

否則當我使用沒有反應,路由器能很好的

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

var App = React.createClass({ 
    render: function() { 
     return (
      <div>Hello World</div> 
     ); 
    } 
}); 


React.render((
    <Router> 
    <Route path="/" component={App} /> 
    </Router> 
), document.body); 

的錯誤是從該行的反應庫

function autoGenerateWrapperClass(type) { 
    return ReactClass.createClass({ 
    tagName: type.toUpperCase(), //<---- 
    render: function() { 
     return new ReactElement(
     type, 
     null, 
     null, 
     null, 
     null, 
     this.props 
    ); 
    } 
    }); 
} 
+0

你能不能給我們整個堆棧跟蹤? –

+0

你解決了嗎? – vaughan

+1

同樣的問題。 –

回答

1

我的猜測是,當React.render是執行,路由器還沒有。試試這個

var routes = (
    <Route handler={App}> 
    </Route> 
); 

Router.run(routes,(Root) => { 
    React.render(<Root/>, document.body); 
}); 
0

React.render()嘗試<Route>而不是<Router>

1

我仍然包裹我的頭周圍反應的路由器,但我檢查的第一件事是你正在使用的版本和文檔的參考。我能得到它通過執行以下工作...

var React = require('react'); 
var ReactRouter = require('react-router'); 
var Route = ReactRouter.Route; 

var App = React.createClass({ 
    render: function() { 
     return (
      <div>Hello World</div> 
     ); 
    } 
}); 

var routes = (
    <Route handler={App}> 
    </Route> 
); 

window.onload = function() { 
    ReactRouter.run(routes, ReactRouter.HistoryLocation, function(Root, state) { 
     React.render(
      <Root />, 
      document.getElementById('main') 
     ) 
    }); 
}; 

基本上什麼PhInside說,但包裹在window.onload

+0

我不得不修改這一行; <路由處理器= {應用}>添加路徑= 「myurl」。它的工作。謝謝 –

相關問題