私はReactJに不慣れです。これは私のコードです:
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}></Route>
</Router>, document.getElementById('app'));
そしてwebpackでそれをコンパイルします。また、エイリアスにメインコンポーネントを追加しました。コンソールはこれらのエラーを投げます: 私はまたこれらのリンクを読む:
React Routerはprop 'history'に失敗しました、未定義です
値が未定義の場合、どうやって履歴を解決する必要がありますか?
React-Routerをアップグレードし、hashHistoryをbrowserHistoryに置き換える
そしてウェブ上で多くの検索をしましたが、私はこの問題を解決することができませんでした。 React Routerはバージョン4です
React-router v4を使用している場合は、react-router-domもインストールする必要があります。その後、react-router-domからBrowserRouterをインポートし、RouterR for BrowserRouterに切り替えます。 v4はいくつかのことを変えるようです。また、react-routerドキュメントは古くなっています。これは私の作業コードです。
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter, Route } from 'react-router-dom'
import App from './components/App';
ReactDOM.render((
<BrowserRouter>
<Route path="/" component={App}/>
</BrowserRouter>
),
document.getElementById('root')
);
どのバージョンのReact Routerを使っていますか?ルーターバージョン4はbrowserHistoryクラスの受け渡しからbrowserHistoryのインスタンスの受け渡しに変更されました。 新しいドキュメントのコード例 を参照してください。
これは自動的にアップグレードする多くの人々を惹きつけています。移行文書は「いつでも」公開されます。
これを一番上に追加します。
import createBrowserHistory from 'history/createBrowserHistory'
const newHistory = createBrowserHistory();
そして
<Router history={newHistory}/>
複数の経路を使いたい場合は、このようにswitchを使用できます。
import {Switch} from 'react-router';
それから
<BrowserRouter>
<Switch>
<Route exact path="/" component={TodoComponent} />
<Route path="/about" component={About} />
</Switch>
</BrowserRouter>
ES6でも同じ問題が発生しましたが、「react-router-dom」ライブラリを使用するように切り替えたときに、問題は解決しました。 ES6のすべてのファンのために、ここに行きます:
npm install --save react-router-dom
Index.jsで:
import {HashRouter, Route} from 'react-router-dom';
import App from './App';
ReactDOM.render(
<HashRouter>
<Route path="/" component={App}/>
</HashRouter>
,
document.getElementById('root')
);
React Routerのバージョン4ではいくつかの点が変更されました。彼らは異なる歴史タイプのために別々のトップレベルルータ要素を作りました。バージョン4を使用している場合は、<Router history={hashHistory}>
を<HashRouter>
または<BrowserRouter>
に置き換えることができます。
詳細については、 https://reacttraining.com/react-router/web/guides を参照してください。
私はまたログイン練習を書く。また、あなたと同じ質問に答えます。一日の奮闘の後、私はthis.props.history.Push('/list/')
だけがそれを作ることができることを多くのプラグインを引き込む代わりに見つけました。ちなみにreact-router-dom
のバージョンは^4.2.2
です。ありがとうございます。
handleSubmit(e){
e.preventDefault();
this.props.form.validateFieldsAndScroll((err,values)=>{
if(!err){
this.setState({
visible:false
});
this.props.form.resetFields();
console.log(values.username);
const path = '/list/';
this.props.history.Push(path);
}
})
}
以下は "react-router@^ 3.0.0"で私のために働きます:
package.json:
"react-dom": "^16.6.0",
"react-router": "^3.0.5"
index.js:
import { render } from 'react-dom'
import { App } from './components/App'
import { NotFound404 } from './components/NotFound404'
import { Router, Route, hashHistory } from 'react-router'
render(
<Router history={hashHistory}>
<Route path='/' component={App} />
<Route path='*' component={NotFound404} />
</Router>,
document.getElementById('root')
)