2017-04-20 64 views
1

我已經安裝了反應路由器,我試圖讓主頁面呈現。反應已安裝的反應路由器,但無法獲得頁面呈現

這是當前index.js

import React, { Component, PropTypes } from 'react'; 
import { Router, Route } from 'react-router'; 

import Layout from './components/Layout'; 
import NewsComponent from './components/NewsComponent'; 

<Router> 
    <div> 
    <Route exact path="/" component={Layout} /> 
    <Route path="/news" component={NewsComponent} /> 
    </div> 
</Router> 

const app = document.getElementById('app') 

ReactDOM.render(
    <Router history={hashHistory}> 
    <Route path="/" component={Layout} /> 
    </Router>, app); 

佈局組件包含頁面的佈局。

我錯過了什麼?

我是我做錯了嗎?

+0

你可能會從'import'語句中缺少'hashHistory'並導致網頁無法正確加載。我不知道你是否遺漏了這個例子,或者你真的錯過了它(與ReactDOM相同) –

回答

1

有一些引用你缺少,我不知道你是否已經省略了他們只是爲了這個例子,或者你真的想念他們。試試這個:

import React from 'react'; 
import ReactDOM from 'react-dom'; //Missing in your example 
import { 
    Router, 
    Route, 
    browserHistory //Missing in your example 
    } from 'react-router'; 
import Layout from './components/Layout'; 

ReactDOM.render(
    <Router history={browserHistory}> 
    <Route path="/" component={Layout} /> 
    </Router>, 
    document.getElementById('root') 
) 

然後在你的組件,你甚至可以通過歷史導航:

import { hashHistory } from 'react-router' 

//Dont forget to bind this in the constructor 
yourMethod (someParams) { 
    hashHistory.push(someUrl) 
} 
+0

我得到一個錯誤與hashHistory - TypeError:_this.props.history是未定義的 – JakeBrown777

+0

嘗試替換'hashHistory'用' browserHistory'。您是否嘗試過我提出的代碼,或者您的代碼收到了錯誤?另外,如果你不介意分享你的'佈局'組件,請......我懷疑那裏有什麼問題,這聽起來你沒有約束某些方法,你正在使用'this.props.history' –

+0

@ JakeBrown777你有機會看看我說的話嗎?讓我知道。謝謝 –

0

嘗試顯式導入ReactDOM(從'react-dom'導入ReactDOM);它在導入React時不會自動包含。

1

除了修改代碼[缺少進口等],你會想特別提到的您正在使用的react-router版本。假設你正在使用NPM

嘗試:

NPM刪除反應路由器

然後:

NPM安裝--save [email protected]

陣營路由器默認安裝的V4是對react-router的完全重新設想,並且與爲以前版本的react-router編寫的代碼不兼容。


如果您在一段時間內沒有使用過React,我建議您使用create-react-app。從那裏開始將是相當簡單:

https://github.com/facebookincubator/create-react-app