Warum reagieren router werfen 'kann Nicht GET /example' Fehler?
Ich bin zu lernen, zu Reagieren, und ich muss hinzufügen, einige Routen mit Reagieren Strecken.
Habe ich installiert react-router
mit npm install react-router
.
Dies ist die main js
wo ich zu erklären, dass die Routen
import React from 'react';
import {ReactDOM, render} from 'react-dom';
import App from './Components/AppComponent';
import Example from './Components/ExampleComponent';
import { Router, Route, IndexRoute, Link, IndexLink, browserHistory } from 'react-router'
render((
<Router history={browserHistory}>
<Route path="/" component={App}>
<Route path="example" component={Example}/>
</Route>
</Router>
), document.getElementById('App'));
Navigieren zu /
funktioniert einwandfrei. Aber wenn ich auf /example
ich bin immer:
Nicht BEKOMMEN
/example
Fehler
Was mache ich falsch?
Diese Weise habe ich das gleiche Problem:
<Router>
<Route path="/" component={App} />
<Route path="/example" component={Example}/>
</Router>
Beispiel Komponente
import React from 'react';
class Example extends React.Component {
render(){
return <div>Example</div>
}
}
export default Example
Dies ist die Link
:
<Link to={'/example'}>aa</Link>
Gibt es keine Fehler in der Konsole.
Nach der änderung bin ich immer diese Fehler in der Konsole (Verursacht durch die Link
)
index.js (Zeile 27585) Warnung: [reagieren-router] Location "/" nicht
passen alle Routenindex.js (Zeile 27585) Warnung: [reagieren-router]
Router
nicht mehr
defaults der Geschichte prop hash-Geschichte. Bitte verwenden Sie die
hashHistory
singleton statt. https://github.com/ReactTraining/react-router/blob/master/upgrade-guides/v2.0.0.md#no-default-history
- Antwort wurde aktualisiert.
- Behoben das update
export default App
Gegensatz zuexport default AppController
und befestigte die<Link />
Komponenten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein Beispiel route geschachtelt innerhalb Ihrer übergeordneten Strecke, so sollten Sie nicht brauchen, ein
/
im/example
.Sie können auch versuchen, die Einstellung einer
IndexRoute
mit was auch immer Ihr Zuhause Komponente so sein würde, dass es einen Verweis.Verknüpfung zu der route würde wahrscheinlich helfen, so dass Sie sehen können, was bis kommenden in der URL, um sicherzustellen, seine, was Sie suchen.
Ihre App-Komponente sollte nicht wirklich sein-rendering alles andere als
{this.props.children}
weil das ist, wo alle Komponenten, dass der router das handling wird gerendert, den router nicht einfach machen, die Dinge aus der main-Datei, die es steuert die Routen und die Komponenten, montieren Sie in die App-Komponente(in der Regel genannt AppController) so dass Sie brauchen, um ein Haus zu bauen Komponente zum Rendern bei der/
route und erklären, dass mitIndexRoute
im router dann einstellen der Links zwischen den Komponenten und wenn alles richtig gemacht haben, als Sie sollten gut zu gehen.Link:
Main:
AppController:
Beispiel-Komponente:
Home-Komponente:
example
route und klicken Sie dann auf es, es könnte nur sein, dass Ihr nicht mit der richtigen Art von Geschichte.localhost:3000
und nach auf dieLink
die url-updates zulocalhost:3000/example
. Aber der Inhalt immer noch der gleichechildren
geliefertRouter
. Überprüfen Sie die render-Methode vonHeader
.import { Link } from 'react-router';
Der Link muss in eckigen Klammern :/ Sie helfen mir sehr, Danke!!! Vielleicht aktualisieren Sie Ihre Antwort mit, dass für einige ein anderesIch habe genau das gleiche problem wie die Frage.
Nach dem Versuch, die obige Antwort, ich bin noch immer der gleiche Fehler, Interessanterweise gibt es auch syntax-Fehler in der obigen Antwort, wo
<IndexRoute component={Home}>
müssen geschlossen sein oder sich selbst geschlossen.
Zwei Möglichkeiten, die ich machen konnte, mein Ding arbeiten:
1) Nicht eine perfekte Weg, aber andere Weise es ist mit
hashHistory
Nur
import { Router, Route, IndexRoute, hashHistory } from 'react-router';
und ändern der Router als<Router history={hashHistory}>
Nun URL, sieht aus wie http://localhost:5000/#/example?_k=a979lt
2)
Sie können
useHistory
als gut.Aber dies fügt auch # in der URL, aber es sieht aus wie
http://localhost:5000/#/example
Wo Abfrageparameter nicht in den link, da werden wir Sie als falsch..
3) In meinem Fall, mit
browserHistory
, wenn ich meine Routen als localhost:5000/#/B.dann funktioniert das Prima und ohne hash ist es nicht.
Überprüfen Sie diesen link für weitere details für jeden von Ihnen.
https://github.com/reactjs/react-router/blob/master/upgrade-guides/v2.0.0.md
EDIT:
Schließlich habe ich meine Lösung zu machen, arbeiten mit browserHistory.
Bitte überprüfen Sie diese heraus. https://stackoverflow.com/a/38585657/3241111
als zu reagieren-router v4, wenn Sie mit webpack mit reagieren, müssen Sie
devServer
Einstellungen in Ihremwebpack.config.js
- Datei um dieses Problem zu vermeiden. stellen Sie sicher, dass IhredevServer
config hathistoryApiFallback
eingestellttrue
, wenn es ist nicht Sie erhalten Nicht die Fehlermeldung im browser , ich habe nur eine einfachedevServer
config von meinem webpack.config.js Datei, momentan bin ich dabei , vielleicht hilft es jemandem....Versuchen Sie, genaue bevor der Weg der App-Komponente