มันค่อนข้างแปลกและฉันอยากจะลงลึกถึงเรื่องนี้
ฉันมีหน้าเว็บที่ผู้ใช้พิมพ์ที่อยู่อีเมลของตนและคลิกปุ่ม จากนั้นฉันจะแสดงข้อความว่า "คุณสมัครแล้ว!" ข้อความ - เรียบง่าย
เพื่อสิ่งนั้น ฉันมีสองเส้นทาง เส้นทางหลักและเส้นทาง "สมัคร"
<Route name="app" path="/" handler={Main}>
<Route name="signed-up" path="signed-up" handler={SignedUp} />
<DefaultRoute handler={Signup} />
</Route>
ในหน้าแรก เมื่อผู้ใช้พิมพ์ที่อยู่อีเมลและคลิกปุ่ม ฉันจะเริ่มการทำงานของ POST AJAX เพื่อบันทึกที่อยู่อีเมลบนฐานข้อมูลส่วนหลังของฉัน (โดยใช้แพ็คเกจ Axios) และเมื่อดำเนินการเสร็จแล้ว ฉันจะไปที่เส้นทาง "ลงทะเบียนแล้ว" .
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");
});
}
ตอนนี้เมื่อฉันพิมพ์ URL ของหน้าของฉันเป็นครั้งแรก
http://localhost:1338
เบราว์เซอร์ (Chrome, FireFox, Safari) ดูเหมือนจะเปลี่ยน URL เป็น
http://localhost:1338/#/
ยุติธรรมเพียงพอ ใน FireFox ฉันพิมพ์อีเมลและคลิกปุ่มส่ง ทุกอย่างทำงานได้ดีและพาฉันไป
http://localhost:1338/#/signed-up
ตอนนี้บน Chrome เมื่อฉันคลิกที่ส่ง มันจะไม่เปลี่ยนเส้นทาง ที่จริงแล้ว บนคอนโซลนักพัฒนาซอฟต์แวร์ ฉันเห็นข้อผิดพลาด
ประการแรก เหตุใดคำขอ "โพสต์" จึงถูกยกเลิก ประการที่สอง เมื่อสิ่งนี้เกิดขึ้น Chrome จะไม่ตอบสนอง เลยรีเฟรชหน้า แล้วขึ้นว่า Chrome's "navy screen death"..
เอาล่ะ น่าตลกดีหากฉันเปลี่ยน URL เริ่มต้นเป็น
http://localhost:1338/?#/
(ใส่เครื่องหมายคำถามหน้าแฮช) จากนั้นทุกอย่างจะทำงานได้ดีบน Chrome ดังนั้นฉันจึงสงสัยว่าเกี่ยวข้องกับเส้นทางหรือพารามิเตอร์เส้นทางของฉัน
มีความคิดอะไรบ้าง?