2016-12-15 3 views
0

Reactを学習しており、thisのチュートリアルに従っています。私はhashHistoryを削除した場合 ReferenceError: hashHistory is not definedHashHistoryを使用しているときのReferenceError

var React = require('react'); 
var ReactRouter = require('react-router'); 
var Router = ReactRouter.Router; 
var Route = ReactRouter.Route; 
var historyHistory = ReactRouter.hashHistory; 
var IndexRoute = ReactRouter.IndexRoute; 


var Main = require('../components/Main'); 
var Home = require('../components/Home'); 


var routes = (
    <Router history={hashHistory}> 
    <Route path='/' component={Main}> 
     <IndexRoute path='/home' component={Home} /> 
    </Route> 
    </Router> 
); 

module.exports = routes; 

とpackage.jsonでのインストールの依存関係:ここに私のroutes.jsファイルです。このコードを使用して

"dependencies": { 
    "react": "^15.4.1", 
    "react-dom": "^15.4.1", 
    "react-router": "^3.0.0" 
    }, 
    "devDependencies": { 
    "babel-core": "^6.20.0", 
    "babel-loader": "^6.2.9", 
    "babel-preset-react": "^6.16.0", 
    "html-webpack-plugin": "^2.24.1", 
    "webpack": "^1.14.0", 
    "webpack-dev-server": "^1.16.2" 
    } 

、私はこのエラーを取得しています、私はこのエラーを受け取ります: ReferenceError: history is not defined

私はエラーを理解できませんhashHistoryを使用して、どのようなhistoryを指すエラーですか?

犯人だライン(dist/index_bundle.jsに存在は、いくつかの生成されたコード)がある:あなたがルーターをレンダリングするときは、5

ので、ライン上のvar historyHistoryとしてReactRouter.hashHistoryをインポートしている

!history.getCurrentLocation ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You have provided a history object created with history v2.x or ' + 'earlier. This version of React Router is only compatible with v3 ' + 'history objects. Please upgrade to history v3.x.') : (0, _invariant2.default)(false) : void 0; 

答えて

1

コンポーネントを使用するには、history = {historyHistory}を実行するか、変数名の先頭をhashHistoryに変更する必要があります。

編集:履歴を完全に除外したときのエラーは、履歴が必須の小道具であるためです。

import { Router, Route, IndexRoute, hashHistory } from 'react-router' 

次にレンダリングにおいて、これらと同じ名前を使用します。

+0

ありがとう、私は今は愚かだと感じる:)また、チュートリアルでは、それは歴史を含まない男のために働いた。彼は以前のバージョンからの変更ですか?彼は2.0.0を使用していましたが、私は3.0.0を使用していますか? –

+0

これまでのバージョンでは、これは必須ではありませんでした。 – janrop

0

は、単純に次のように、1行に必要なすべてのものをインポートします。

+0

私はこれを取得しています。履歴v2.x以前で作成された履歴オブジェクトを提供しました。このバージョンのReact Routerは、v3の履歴オブジェクトとのみ互換性があります。履歴v3.xにアップグレードしてください。 ' – holms

+0

は 'history'の' import {createHistory}で修正されました。 //このパッケージをインストールする必要があります let history = createHistory(); ' – holms

関連する問題