Vue Router を使用してシングルページ アプリケーションを開発するプロセスでは、多くの場合、ユーザーがブラウザ履歴をクリアできるようにする必要があります。ただし、Vue Router にはこの機能の実装に役立つ組み込みメソッドが提供されていないため、自分で実装する方法を見つける必要があります。
方法 1:
1 つの方法は、JavaScript で「replaceState」と呼ばれるメソッドを使用することです。これにより、現在のブラウザ履歴エントリを新しいエントリに置き換えることで、履歴を削除するという目的を達成できます。 Vue Router でこのメソッドを使用できます。具体的な手順は次のとおりです:
router.beforeEach((to, from, next) => { sessionStorage.setItem('toPath', to.fullPath) // 保存即将跳转的路由对象的路径 next() })
function clearHistory() { const toPath = sessionStorage.getItem('toPath') history.replaceState(null, '', toPath) sessionStorage.removeItem('toPath') }
export default { clearHistory }
このメソッドの手順を要約すると:
方法 2:
ブラウザ履歴をクリアするもう 1 つの方法は、Vue Router のフック機能を使用することです。具体的な手順は次のとおりです。 Vue Router のグローバル ポストフック関数の「replace」メソッドを使用して、現在のルーティング パスを以前のルーティング パスに置き換えることで、履歴レコードを削除するという目的を達成できます。
router.afterEach((to, from) => { if (!sessionStorage.getItem('isBack')) { history.replaceState(null, '', from.fullPath) sessionStorage.setItem('fromPath', from.fullPath) // 保存从哪个路由页面来 } sessionStorage.removeItem('isBack') // 操作完后,清除标识变量 })
this.$emit('clearHistory')
<template> <button @click="handleClearHistory">清除历史记录</button> </template> <script> export default { methods: { handleClearHistory() { this.$router.replace(sessionStorage.getItem('fromPath')) sessionStorage.setItem('isBack', 'true') } } } </script>
Vue Router のグローバル ポストフック関数で、現在のページのルーティング パスを sessionStorage に保存します。
以上がvueルーターの削除履歴の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。