2017-05-30 72 views
0

我已经建立了一个简单的应用程序做出反应路由器,但是当我尝试启动该应用程序,我得到在控制台的两个错误:阵营路由器不能正常工作

  1. 的道具history在需要被标记Router,但其值为undefined

  2. 无法读取的不确定

财产location这是我的代码:

var React = require('react'); 
var ReactDOM = require('react-dom'); 
var {Route, Router, IndexRoute, hashHistory} = require('react-router'); 
var Main = require('Main'); 

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

和的package.json文件:

{ 
    "name": "boilerplate", 
    "version": "1.0.0", 
    "description": "Simple React App", 
    "main": "ext.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "Milad Fattahi", 
    "license": "ISC", 
    "dependencies": { 
    "express": "^4.15.3", 
    "react": "^15.5.4", 
    "react-dom": "^15.5.4", 
    "react-router": "^4.1.1" 
    }, 
    "devDependencies": { 
    "babel-core": "^6.5.1", 
    "babel-loader": "^6.2.2", 
    "babel-preset-es2015": "^6.5.0", 
    "babel-preset-react": "^6.5.0", 
    "babel-preset-stage-0": "^6.24.1", 
    "webpack": "^1.12.13" 
    } 
} 

编辑:

我安装了react-router-dom并更改了第三行代码,但没有任何更改。

var {Route, Router, Link} = require('react-router-dom'); 
+1

您正在使用**反应路由器v4 **,已完全更改。你写的是为旧版本,使用'react-router-dom',检查这个细节:https://reacttraining.com/react-router/web/guides/quick-start –

回答

2

与V4,您可能还需要进口反应路由器-DOM。我没有测试,但这应该工作。

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import { BrowserRouter, Route,IndexRoute, hashHistory } from 'react-router-dom' 
var Main = require('Main'); 


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

而且,与V4,没有必要进口“反应路由器”。 'react-router-dom'会这样做。

+0

我定义了BrowserRouter作为路由器和有效。谢谢。 –