2015-09-23 41 views
0

試圖實現在我的項目反應路由器1.0.0-RC1和我收到以下錯誤:反應路由器1.0.0-RC1的基本implementaton顯示錯誤

1)警告:React.createElement:類型應該不爲空或未定義。它應該是一個字符串(用於DOM元素)或ReactClass(用於複合組件)。 2)警告:只能將函數或字符串裝載爲React組件。 3)遺漏的類型錯誤:無法讀取屬性 'toUpperCase' 未定義

routes.js文件:

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

var Home = require('./components/home.js'); 
var Jobs = require('./components/jobs.js'); 
var JobDetail = require('./components/jobDetail'); 
var App = require('./components/app.js'); 
var About = require('./components/about.js'); 
var NotFoundPage = require('./components/notfoundpage.js'); 

var routes = (<Router> 
     <Route path="/" component={App}> 
      <Route path="jobs" component={Jobs}> 
       <Route path="jobs-detail" component={JobDetail} /> 
      </Route> 
      <Route path="*" component={NotFoundPage} /> 
     </Route> 
    </Router>); 

module.exports = routes; 

app.js文件:

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

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

回答

1

你有兩個批次的Router標籤(一個在app.js中,一個在routes.js中)。

從你的路由刪除Router標籤文件,然後app.js可以如下:

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

我找到upgrade guide是由@Clarkie提供

+0

nope沒有工作,仍然是同樣的錯誤。 – rosnk

0

答案是正確的,但我是非常有用的仍然缺少其他一些東西,並最終設法使其工作。

1)我仍然有其用,我們不會在1.0.0-RC1需要的應用程序組件。現在我們可以有一個具有所需路徑和組件名稱的路由。在我的情況,現在我的路由文件(routes.js)看起來有些事情是這樣的:

var routes = (
    <Route> 
     <Route path="/" component={Home} /> 
     <Route path="jobs" component={Jobs}> 
      <Route path="jobdetail/:id" component={JobDetail} /> 
     </Route> 
     <Route path="about" component={About} /> 
     <Route path="*" component={NotFoundPage} /> 
    </Route>  
    ); 

,我有渲染initialize_app.js我的路線,你的情況,你可以做,在app.js或其他一些文件。渲染代碼看起來像這樣在我的情況:

var createHashHistory = require('react-router/node_modules/history/lib/createHashHistory'); 
var history = createHashHistory(); 

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

請注意,我已刪除了「路由器」在routes.js由@Clarkie的建議。

我已經使用了哈希風格的URL,如果你需要清潔的網址,你可以使用createBrowserHistory如圖doc

2)導入反應路由器的微小變化: 在以前的版本我曾經要求路由器如下路線:

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

但在新版本中它是這樣的:

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