vue router delete history
May 24, 2023 pm 02:07 PMIn the process of developing single-page applications using Vue Router, we often need to allow users to clear the browser history. But Vue Router does not provide a built-in method to help us implement this function, so we need to find a way to implement it ourselves.
Method 1:
One method is to use a method called "replaceState" in Javascript, which can replace the current browser history entry with a new entry, thereby achieving Purpose of deleting history. We can use this method with Vue Router. The specific steps are as follows:
- First, we need to intercept all routing jump events in the guard of Vue Router, and then change the routing object to be jumped. The path information is saved.
router.beforeEach((to, from, next) => { sessionStorage.setItem('toPath', to.fullPath) // 保存即将跳转的路由对象的路径 next() })
- Then, when the user wants to clear the browser history, we can get the previously saved path from sessionStorage and then use the "replaceState" method to replace the current history with The history record of this path, so as to achieve the purpose of deleting the history record.
function clearHistory() { const toPath = sessionStorage.getItem('toPath') history.replaceState(null, '', toPath) sessionStorage.removeItem('toPath') }
- Finally, we expose this method of clearing history for users to call.
export default { clearHistory }
To summarize the steps of this method:
- Save the path of the routing object to be jumped to sessionStorage in the guard of Vue Router.
- When you need to clear the history, get the previously saved path from sessionStorage, and use the "replaceState" method to replace the current history with the history of that path.
- Expose an API interface for users to call the method of clearing history.
Method 2:
Another way to clear browser history is to use the hook function of Vue Router. The specific steps are as follows:
- We can use the "replace" method in the global post-hook function of Vue Router to replace the current routing path with the previous routing path, thereby achieving the purpose of deleting the history record.
router.afterEach((to, from) => { if (!sessionStorage.getItem('isBack')) { history.replaceState(null, '', from.fullPath) sessionStorage.setItem('fromPath', from.fullPath) // 保存从哪个路由页面来 } sessionStorage.removeItem('isBack') // 操作完后,清除标识变量 })
- Then, we can trigger the event of deleting the history record in the component. The specific implementation can use Vue's $emit method to pass data to the parent component.
this.$emit('clearHistory')
- Listen to the event of deleting history records in the parent component, call the "replace" method on the routing object in the callback function, and replace the path of the current routing object with the previous path. This will enable you to clear your browser history.
<template> <button @click="handleClearHistory">清除历史记录</button> </template> <script> export default { methods: { handleClearHistory() { this.$router.replace(sessionStorage.getItem('fromPath')) sessionStorage.setItem('isBack', 'true') } } } </script>
Summarize the steps of this method:
- In the global post-hook function of Vue Router, save the routing path of the current page to sessionStorage.
- Trigger the event of deleting the history record in the component that needs to delete the history record, and use the $emit method to pass the data to the parent component.
- Listen to the event of deleting the history record in the parent component, and call the "replace" method on the routing object in the callback function to replace the path of the current routing object with the previous path.
To sum up, we can use either of these two methods to achieve the function of deleting browser history. Which method to choose can be based on specific business needs and development scene to determine. Hope this article is helpful to you.
The above is the detailed content of vue router delete history. For more information, please follow other related articles on the PHP Chinese website!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

What is useEffect? How do you use it to perform side effects?

How does currying work in JavaScript, and what are its benefits?

What are higher-order functions in JavaScript, and how can they be used to write more concise and reusable code?

How does the React reconciliation algorithm work?

What is useContext? How do you use it to share state between components?

How do you prevent default behavior in event handlers?

What are the advantages and disadvantages of controlled and uncontrolled components?
