2017-04-07 94 views
0
import React, { Component } from 'react'; 
import './App.css'; 
var ReactRouter = require('react-router'); 
var Router = ReactRouter.Router; 
var Route = ReactRouter.Route; 
var Navigation = ReactRouter.Navigation; 

var StorePicker = React.createClass({ 
render : function() { 
return (
    <form className="store-selector"> 
    <h2>Please Enter A Store</h2> 
    </form> 
) 
} 

}); 

var routes = (
<Router> 
<Route path="/" component={StorePicker}/> 
<Route path="store" component={App}/> 
</Router> 
) 
export default routes; 

我試圖與反應路由器工作。此代碼不起作用。它不會給出任何錯誤。但它給出了兩個警告。陣營路線行不通


警告:無法丙類型:該道具historyRouter需要被標記,但其值是undefined。 在路由器


React.createElement:類型無效 - 預期的字符串(用於內置組件)或類/功能(用於複合部件),但得到了:對象。

+0

第一個警告是不言自明的。路由器組件需要一個'歷史'道具,你沒有提供。請參閱您正在使用的react-router版本的文檔。不知道它來自哪裏,第二個警告就無法診斷。你不在上面的代碼中調用'React.createElement',所以它必須在別的地方。 –

+0

針對的第一個警告:看看這個答案】(http://stackoverflow.com/a/41023726/2902660) – Pineda

+0

您還沒有導入應用程序組件,但您在使用途徑。 –

回答

0

對於警告:
(警告:無法道具類型:在路由器所需的道具歷史標記,但它的價值是不確定的路由器)

你錯過歷史定義你的路由器嘗試:

<Router history={hasHistory|browserHistory|createMemoryHistory}> 
    <Route path="/" component={Home} /> 
</Router>

注意:你必須選擇的歷史類型添加到您的進口與路由器做出反應,因此,如果您選擇添加browserHistory您的進口會是這個樣子:

import { browserHistory, Router, Route } from 'react-router' 
      ^---added as a named import

的不同選項的簡短說明:

browserHistory:先從路線「/」您的完整URL路徑基地。因此,如果您的SPA位於www.myapp.com,則默認情況下,根路徑將與www.myapp.com/相符。所以如果你想要一條到www.myapp.com/blog的路由,你需要定義一個路由器路徑'/blog'。

hasHistory:做同樣的事情,但根在URL中找到的第一個#字符開始:example.com/#/some/path將對應於:/some/path

createMemoryHistory:用於測試和服務器渲染。該選項不能從中讀取地址欄。

查看:React Router Histories瞭解更多信息

+0

這仍然是一樣的。它不會在http:// localhost:3000 /上顯示「請輸入商店」。我輸入browserHistory作爲道具並導入它。 –