Ini agak aneh dan saya ingin memahaminya.
Saya memiliki halaman tempat pengguna mengetikkan alamat email mereka dan mengklik tombol lalu saya tunjukkan "Anda sudah mendaftar!" pesan - sederhana.
Untuk itu, saya punya dua rute. Rute utama dan rute "mendaftar".
<Route name="app" path="/" handler={Main}>
<Route name="signed-up" path="signed-up" handler={SignedUp} />
<DefaultRoute handler={Signup} />
</Route>
Di halaman pertama, ketika pengguna mengetikkan alamat email dan mengklik tombol, saya mengaktifkan POST AJAX untuk menyimpan alamat email di DB backend saya (menggunakan paket Axios) dan setelah selesai, saya pergi ke rute "mendaftar" .
handleSubmit() {
var router = this.context.router;
var email = this.refs.email.getDOMNode().value;
this.refs.email.getDOMNode().value = '';
helpers.postSignupEmail(email).then((response) => {
// then display the signed up page
router.transitionTo("signed-up");
});
}
Sekarang ketika saya pertama kali mengetikkan URL halaman saya
http://localhost:1338
Browser (Chrome, FireFox, Safari), semua sepertinya mengubah URL menjadi
http://localhost:1338/#/
Cukup adil. Di FireFox, saya mengetikkan email dan mengklik tombol kirim, semuanya berfungsi dengan baik dan membawa saya ke sana
http://localhost:1338/#/signed-up
Namun sekarang di Chrome, ketika saya mengklik kirim, itu tidak mengubah rute. Faktanya, di konsol pengembang, saya melihat kesalahan.
Pertama, mengapa permintaan "postingan" dibatalkan? Kedua, jika ini terjadi, Chrome tidak responsif. Jadi saya menyegarkan halaman, lalu saya mendapatkan "kematian layar angkatan laut" Chrome.
Nah, lucunya jika saya mengubah URL awal menjadi
http://localhost:1338/?#/
(memasukkan tanda tanya di depan hash), maka semuanya berfungsi dengan baik di Chrome. Jadi, saya bertanya-tanya apakah ini ada hubungannya dengan jalur atau parameter rute saya.
Ada ide?