2017-04-20 65 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