Ich bin neu bei ReactJs. Das ist mein Code:
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'));
und kompilieren mit webpack. Außerdem habe ich meinen Aliasnamen Hauptkomponente hinzugefügt. . Die Konsole gibt diese Fehler aus: Ich habe auch diese Links gelesen:
Reaktirouter fehlgeschlagene Requisite 'Verlauf', ist undefiniert
Wie löse ich die Historie für erforderlich, wenn der Wert nicht definiert ist?
Aktualisieren des React-Routers und Ersetzen der Hash-Historie durch die Browser-Historie
und viele Suchen im Internet, aber ich konnte dieses Problem nicht beheben. React Router ist Version 4
Wenn Sie den reakt-router v4 verwenden, müssen Sie auch den reakt-router-dom installieren. Danach importieren Sie BrowserRouter von React-Router-Dom und wechseln Sie Router für BrowserRouter. Es scheint, dass v4 mehrere Dinge ändert. Auch die Dokumentation des reakt-Routers ist veraltet. Dies ist mein Arbeitscode:
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')
);
Welche Version von React Router verwenden Sie? Router Version 4 wurde von der Übergabe der browserHistory-Klasse zur Übergabe einer browserHistory-Instanz geändert. Siehe Codebeispiel in den neuen Dokumenten .
Dies hat viele Leute gefangen, die automatisch upgraden; Ein Migrationsdokument wird "jeden Tag jetzt" veröffentlicht.
Sie möchten dies nach oben hinzufügen:
import createBrowserHistory from 'history/createBrowserHistory'
const newHistory = createBrowserHistory();
und
<Router history={newHistory}/>
Wenn Sie mehrere Routen haben möchten, können Sie den Schalter so verwenden,
import {Switch} from 'react-router';
dann
<BrowserRouter>
<Switch>
<Route exact path="/" component={TodoComponent} />
<Route path="/about" component={About} />
</Switch>
</BrowserRouter>
Ich habe das gleiche Problem in ES6 bekommen, aber als ich zur Verwendung der 'Reakt-Router-Dom'-Bibliothek gewechselt bin, wurde das Problem gelöst. Für alle Fans von ES6 geht es los:
npm install --save react-router-dom
In index.js:
import {HashRouter, Route} from 'react-router-dom';
import App from './App';
ReactDOM.render(
<HashRouter>
<Route path="/" component={App}/>
</HashRouter>
,
document.getElementById('root')
);
Version 4 von React Router hat mehrere Änderungen vorgenommen. Sie stellten separate Routerelemente der obersten Ebene für die verschiedenen Verlaufstypen her. Wenn Sie Version 4 verwenden, sollten Sie <Router history={hashHistory}>
durch <HashRouter>
oder <BrowserRouter>
ersetzen können.
Weitere Informationen finden Sie unter https://reacttraining.com/react-router/web/guides
Ich schreibe auch eine Login-Praxis. Und auch die gleiche Frage wie du. Nach einem langen Tag habe ich festgestellt, dass nur this.props.history.Push('/list/')
es schaffen kann, anstatt viele Plugins einzubinden. Übrigens ist die react-router-dom
-Version ^4.2.2
. Vielen Dank!
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);
}
})
}
Folgendes funktioniert für mich mit "[email protected]^3.0.5":
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')
)