Wie die reagieren, router funktionieren mit statischen Elemente, html5-Modus, history-API und verschachtelte Routen?
Dachte ich, ich beginnen zu verstehen, Reagieren-Router, aber ich traf eine neue Wand, beim hinzufügen einer Bibliothek lädt, die css für deren Komponenten. Funktioniert alles wunderbar, wenn ein navigieren aus meiner Heimat, auf der Seite mit der Komponente, aber wenn ich es aktualisieren, werden die urls der Schriften defekt sind...
Fand ich einige Zeiger hier und hier aber kein Glück so weit. Ist das ein häufiges Problem ? Wie das zu umgehen ?
Ich benutze webpack dev-server mit default-config gebaut von einem yeoman scaffolder.
Die Bibliothek, die ich benutze, ist Reagieren Fa icons anzeigen.
Wenn ich laden Sie meine app auf http://localhost:8000/ alles, was gut zeigt, dann navigiere ich zu http://localhost:8000/customer/ABCD1234/chat und meine icons sind ok. Die Schrift wurde richtig geladen.
Dann habe ich die Seite aktualisieren, und ich sehe in der Konsole :
DOMLazyTree.js?019b:56 HOLEN Sie sich http://localhost:8000/customer/ABCD1234/assets/926c93d201fe51c8f351e858468980c3.woff2
Ist offensichtlich defekt, da der Kunde Teil sollte nicht hier sein...
Hier ist mein router so weit :
ReactDOM.render(
<Router history={browserHistory}>
<Route path='/' component={App}>
<IndexRoute component={Index}/>
<Route path='customer/:id' component={Customer} />
<Route path='customer/:id/chat' component={CustomerChat}/>
<Route path="*" component={ NotFound } />
</Route>
</Router>
, document.getElementById('support-app'));
Ich auch versucht, indem ein <base href="/"/>
zu meinem index.html aber ich bekomme eine schöne Warnung in rot in der Konsole, also vielleicht nicht die beste Idee :
Hinweis: die Automatisch-Einstellung wird der Basisname mit ist
veraltet und wird entfernt werden, in der nächsten major release. Die
Semantik sind geringfügig von basename. Bitte
übergeben Sie den Basisnamen explizit in den Optionen createHistory
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es klingt wie Sie haben festgelegt, relative Pfade zu den Vermögenswerten und-Symbole in der CSS.
background-image: url('assets/image/myicon.png')
versuchen Sie stattdessen einen absoluten Pfad:
background-image: url('/assets/image/myicon.png')
Wie Reagieren die apps sind single-page-Anwendungen, und geben Sie Ihre app auf
/
alle urls gehen, um zu funktionieren, egal, die Seite, die Sie navigieren zu, da Sie relativ zu der Wurzel, wo Sie gestartet.Aber sobald Sie laden Ihre Seite auf einen anderen Pfad wie
/customer/ABCD
alle Ihre Vermögenswerte gehen in Bezug auf, daher die falsche url, die Sie sehen in Ihrer Konsole.Auch, wenn mit webpack, können Sie versuchen, Ihre
publicPath
in deiner config-Datei wie folgt:I hava eine gleiche problem.
Hinzufügen
<base href="http://whatever">
tag, um den Kopf von einer Seite mit reagieren-router-HTML mit dem Standard-browserHistoryLaden der Seite - history.js wird Ausgang 2 Fehler -, Warn -: Automatisch-Einstellung wird der Basisname mit
<base href>
ist veraltet und wird entfernt werden, in der nächsten major release. Die Semantik sind geringfügig von basename. Bitte geben Sie den Basisnamen der explizit in den Optionen createHistoryÄndern reagieren-router-Geschichte zu nutzen, die Geschichte, wo die Geschichte ist
const history = useRouterHistory(createHistory)({ basename: 'http://whatever' })
, das sollte das problem beheben (wie der Basisname ist nun ausdrücklich bestanden)Laden Sie die Seite neu
https://github.com/reactjs/react-router/issues/3387
5/9 update
In meinem Fall.
index.html
app.js
Und laden Sie dann die Warnung verschwindet.
hoffe, dass dies nützlich ist.
Ich dies Problem gelöst Dank reagieren-Skript:2+
Den Sie gerade haben, um eine js-Datei namens setupProxy.js es wird geladen, indem die Entwickler-server. Jetzt haben Sie die vollständige Kontrolle über Ihre proxy:
https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#configuring-the-proxy-manually
Ich löste dies durch das laden von font-awesome cdn auf der app-Startseite. Dann ist es auf allen Routen und in allen Situationen.