2016-09-27 17 views
11

Tôi có một trường hợp: người dùng sẽ mở một liên kết kích hoạt. Sau khi người dùng thực hiện quá trình kích hoạt của mình, hệ thống sẽ chuyển anh ta đến một trang khác. Tôi không muốn giữ url kích hoạt trên trình duyệt và ngăn người dùng quay lại - bước kích hoạt.React-router: Thay đổi URL và lịch sử rõ ràng

Tôi làm cách nào để có được trường hợp này?

Xin cảm ơn,

+0

Cuối cùng, tôi có thể làm việc xung quanh bởi các báo cáo: history.replaceState ({}, document.title, url); props.router.replace (url); – user3468795

Trả lời

1

Lịch sử HTML5 API cung cấp hai phương thức cho Adding and modifying history entries.

pushState(): nhà nước lại được bảo quản replaceState(): không trở lại trạng thái

Giả sử bạn đang sử dụng react-router. Vì vậy, về phần bạn sử dụng

this.props.history.replaceState('your new state') 

đọc thêm: https://developer.mozilla.org/en-US/docs/Web/API/History_API

video: https://www.youtube.com/watch?v=1iAG6h9ff5s&index=6&list=PLoYCgNOIyGABj2GQSlDRjgvXtqfDxKm5b

6

Trong reactJS bạn nên sử dụng browserHistory cho mục đích này. Điều này sẽ chăm sóc bạn lịch sử và bạn không cần phải thực hiện những chức năng của riêng bạn.

trình duyệtHistory có 2 phương pháp push()replace() có chức năng giống như @fazal được đề cập trong câu trả lời của anh ấy nhưng theo cách tốt hơn.

Vì vậy, nếu bạn muốn tránh sử dụng sẽ trở lại trạng thái trước đó bạn sẽ cần phải sử dụng browserHistory().replace

Bắt đầu với nhập khẩu nó vào mã của bạn: -

import {browserHistory} from 'react-router' 

Sau khi người dùng đã kích hoạt bạn sau đây: -

browserHistory.replace(//your new link) 
+0

Xin chào, Tôi đã thử cách này, tôi vẫn không thể ghi đè url trên trình duyệt. (Tôi biết thay đổi url không phải là hành vi phổ biến của ứng dụng SPA.) – user3468795

Các vấn đề liên quan