国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Vue.js中該如何自己維護路由跳轉記錄

2024-05-06 15:39:16
字體:
來源:轉載
供稿:網友

前言

在Vue的項目中,如果我們想要做返回、回退操作時,一般會調用router.go(n)這個api,但是實際操作中,使用這個api有風險,就是會讓用戶跳出當前應用,因為它記錄的是瀏覽器的訪問記錄,而不是你當前應用的訪問記錄,這是非常可怕的事情。

解決方案就是,我們自己來維護一份history跳轉記錄。

案例與使用場景

代碼地址:https://github.com/dora-zc/mini-vue-mall (本地下載)

這是一個基于Vue.js的小型商城案例,應用場景:

    自己實現一個Vue插件src/utils/history.js,通過堆棧的方式維護頁面跳轉的歷史記錄,控制返回跳轉 點擊返回按鈕是出棧操作 在全局路由router.js 中,實例化路由前,通過原型擴展router的back()方法 在全局afterEach中存放歷史記錄

代碼實現

實現history插件,維護歷史記錄

// src/utils/history.jsconst History = { _history: [], // 歷史記錄堆棧 install(Vue) {  // 提供Vue插件所需安裝方法  Object.defineProperty(Vue.prototype, '$routerHistory', {   get() {    return History;   }  }) }, push(path) { // 入棧  this._history.push(path); }, pop() {  this._history.pop(); }, canBack(){  return this._history.length > 1; }}export default History;

在路由實例化之前,擴展back()方法

// src/router.jsimport Vue from 'vue'import Router from 'vue-router'import History from './utils/history';Vue.use(Router);Vue.use(History);// 實例化之前,擴展RouterRouter.prototype.goBack = function () { this.isBack = true; this.back();}

在路由全局afterEach中記錄跳轉歷史

// src/router.js// afterEach記錄歷史記錄router.afterEach((to, from) => { if (router.isBack) { // 后退 History.pop(); router.isBack = false; router.transitionName = 'route-back'; } else { History.push(to.path); router.transitionName = 'route-forward'; }})

在公用Header組件中使用

// Hearder.vue<template> <div class="header"> <h1>{{title}}</h1> <i v-if="$routerHistory.canBack()" @click="back"></i> <div class="extend">  <slot></slot> </div> </div></template><script>export default { props: { title: {  type: String,  default: "" } }, methods: { back() {  this.$router.goBack(); } }};</script>

完整代碼請查看:https://github.com/dora-zc/mini-vue-mall(本地下載)

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對錯新站長站的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 申扎县| 曲阜市| 宜昌市| 嘉祥县| 常德市| 武夷山市| 登封市| 定安县| 蚌埠市| 晋宁县| 鄄城县| 新疆| 永济市| 平谷区| 乐陵市| 金川县| 天峻县| 枣强县| 临朐县| 宁波市| 郑州市| 康平县| 肃南| 丰镇市| 大化| 师宗县| 丹东市| 应城市| 中超| 枝江市| 开阳县| 临邑县| 阳东县| 五峰| 盖州市| 乌拉特后旗| 综艺| 西充县| 浦城县| 张家口市| 会泽县|