Lebih
Bereaksi-router v4 - tidak BISA *url*
Saya mulai menggunakan bereaksi-router v4. Saya memiliki sederhana <Router>
saya app.js dengan beberapa link navigasi (lihat kode di bawah ini). Jika saya arahkan ke localhost/kosakata
, router mengarahkan anda ke halaman yang tepat. Namun, ketika saya tekan reload (F5) setelah itu (localhost/kosakata
), semua konten menghilang dan browser laporan Tidak BISA /kosakata
. Bagaimana itu mungkin? Dapatkah seseorang memberi saya petunjuk bagaimana untuk memecahkan (reload halaman dengan benar)?
App.js:
import React from 'react'
import ReactDOM from 'react-dom'
import { BrowserRouter as Router, Route, Link } from 'react-router-dom'
import { Switch, Redirect } from 'react-router'
import Login from './pages/Login'
import Vocabulary from './pages/Vocabulary'
const appContainer = document.getElementById('app')
ReactDOM.render(
<Router>
<div>
<ul>
<li><Link to="/">Home</Link></li>
<li><Link to="/vocabulary">Vocabulary</Link></li>
</ul>
<Switch>
<Route exact path="/" component={Login} />
<Route exact path="/vocabulary" component={Vocabulary} />
</Switch>
</div>
</Router>,
appContainer)
53
8
I'm asumsi anda're menggunakan Webpack. Jika demikian, menambahkan beberapa hal yang harus anda webpack config harus memecahkan masalah. Secara khusus,
output.publicPath = '/'
dandevServer.historyApiFallback = true
. Berikut ini's contoh webpack config di bawah ini yang menggunakan kedua ^ dan perbaikan refresh masalah bagi saya. Jika anda're penasaran "mengapa", this akan membantu.Saya menulis lebih banyak tentang hal ini di sini - Memperbaiki "tidak bisa MENDAPATKAN /URL" kesalahan di refresh dengan Bereaksi Router (atau bagaimana sisi client router bekerja)
Hanya untuk melengkapi Tyler's jawaban bagi siapa saja yang masih berjuang dengan ini:
Menambahkan
devServer.historyApiFallback: true
untuk saya webpack config (tanpa settingpublicPath
) tetap 404/Tidak-MENDAPATKAN kesalahan saya lihat di refresh/kembali/maju, tapi hanya untuk satu tingkat bersarang rute. Dengan kata lain, "/" dan "/topik" mulai bekerja baik-baik saja tapi apa-apa di luar itu (misalnya "/topik/apa") masih melemparkan 404 di refresh/dll.Hanya menemukan jawaban yang diterima berikut ini: https://stackoverflow.com/questions/29718481/unexpected-token-error-in-react-router-component dan itu memberikan terakhir bagian yang hilang bagi saya. Menambahkan awalan
/
untuk bundle script src sayaindex.html
telah memecahkan masalah ini sepenuhnya.Saya sedang mengalami masalah yang sama, apa yang tetap itu bagi saya adalah editing saya
paket.json
file, dan di bawahscript: {
di akhir saya webpack
membangun
kode saya menambahkan--sejarah-api-mundur
hal ini juga tampak seperti solusi termudah untukTidak BISA /url
kesalahanCatatan: pada saat anda membangun setelah menambahkan
--sejarah-api-fallback
anda akan melihat sebuah garis dalam output yang terlihat seperti ini (dengan apa pun yang anda file indeks):Jika anda menggunakan Webpack periksa konfigurasi anda di bagian dari konfigurasi server untuk "contentBase" atribut. Anda dapat mengatur dengan contoh ini:
Saya juga telah sukses dengan ini dengan menambahkan ...
historyApiFallback: true
Jika aplikasi anda di-host pada file statis server, anda perlu menggunakan bukan .
https://github.com/ReactTraining/react-router/blob/v4.1.1/FAQ.md#why-doesnt-my-application-render-after-refreshing
Jika anda menggunakan Express (tidak Webpack), ini bekerja untuk saya..
Ini bekerja untuk saya hanya perlu hanya addding
devServer { historyApiFallback: true }
OK, tidak perlu menggunakanpublicPath: '/'
penggunaan seperti:
devServer: { historyApiFallback: benar },