2016-09-15 82 views
1

在ES5採用陣營的路由器,我有下面的代碼Router`不再默認的歷史道具湊歷史

var React = require('react'); 
var Render = require('react-dom').render; 
var Router = require('react-router').Router; 
var Route = require('react-router').Route; 
var hashHistory = Router.hashHistory; 
var browserHistory = Router.browserHistory; 

var About = require('./components/about/aboutPage'); 

var routes = (
    <Router> 
     <Route path="/" handler={App}> 
      <Route path="about" handler={About}/> 
     </Route> 
    </Router> 
); 

module.exports = routes; 

這在{} main.j呈現爲

var ReactDOM = require('react-dom'); 
var Router = require('react-router').Router; 
var routes = require('./routes'); 

ReactDOM.render(<Router>{routes}</Router>, document.getElementById('app')); 

然而,在控制檯中,我得到這樣的警告並沒有什麼加載了:在上面的代碼中

bundle.js:1845 Warning: [react-router] `Router` no longer defaults the history prop to hash history. Please use the `hashHistory` singleton instead 

我已經清楚地通過{} hashHistory ,但它仍然在抱怨。

任何可能出錯的提示?

謝謝

回答

1

找到了原因 - 這是我的渲染代碼

ReactDOM.render(<Router>{routes}</Router>, document.getElementById('app')); 

是一個問題{}航線已經包含{},沒有必要再指定它,而渲染。正因爲如此,在渲染代碼中缺少{history}道具。所以,我只是改變了渲染代碼:

ReactDOM.render(routes, document.getElementById('app')); 

和它的作品完美的罰款!

謝謝

1

不,你沒有。你剛剛定義它,並沒有使用它。您必須在路由器標記中通過history={hashHistory}

var React = require('react'); 
var Render = require('react-dom').render; 
var Router = require('react-router').Router; 
var Route = require('react-router').Route; 
var hashHistory = Router.hashHistory; 
var browserHistory = Router.browserHistory; 

var About = require('./components/about/aboutPage'); 

var routes = (
    <Router history={hashHistory}> 
     <Route path="/" handler={App}> 
      <Route path="about" handler={About}/> 
     </Route> 
    </Router> 
); 

module.exports = routes; 

P.S. react-router 2.8.0需要反應v15.3.0及以上版本。請訪問 以下鏈接。

https://www.versioneye.com/nodejs/react-router/2.8.0

如果你沒有這個,我會建議你使用反應路由器V2.0.0或更新你所需要的版本反應。

+0

我這樣做,但仍然警告仍然存在。我現在正在通過反應路由器代碼本身,並且看到它調用了[function isDeprecatedHistory(history){return} {history || history ||}}。 !history .__ v2_compatible__ }]這似乎是返回true導致警告生成。不知道爲什麼這是真的,因爲歷史是非空的,並且是V2兼容的 – sppc42

+0

您使用的是哪個版本的反應路由器 –

+0

當前正在使用2.8.0 – sppc42