欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決vue中菜單再次點擊內(nèi)容不刷新問題

 更新時間:2023年08月13日 08:58:00   作者:掘金歸海一刀  
當elementUI中菜單打開后,再次點擊不會刷新的問題,導致菜單再次點擊不刷新的根本原因是頁面打開后,再次打開相同的頁面是不會刷新的,這應該是框架的機制就是如此,小編整理了兩個比較不錯的解決方法,需要的朋友可以參考下

說明

今天項目經(jīng)理讓我解決一下elementUI中菜單打開后,再次點擊不會刷新的問題,看了下elementUI組件官網(wǎng),發(fā)現(xiàn)好像除了一個菜單選中事件,沒啥別的有用的。導致菜單再次點擊不刷新的根本原因是頁面打開后,再次打開相同的頁面是不會刷新的,這應該是框架的機制就是如此。網(wǎng)上又查了下,像這種this.$router.go(0)和location.reload()整個頁面刷新的方式肯定直接pass了。本著認真負責,甘于奉獻的工作態(tài)度,我毅然決然放棄了摸魚的機會,整理了兩個比較不錯的解決方法。

我們先在項目中找到菜單組件的位置,在其組件中定義下菜單選中事件handleSelect

image.png

方式一

我們在定義的handleSelect方法中,加入下面一樣代碼:

 handleSelect(){
      this.$router.push('/empty');
 }

這行代碼是選中菜單后,讓其跳轉(zhuǎn)到一個不存在的空頁面,等程序走到后面會再次跳回到我們要跳的頁面,如果沒有的話,可以根據(jù)事件參數(shù)跳轉(zhuǎn)回來:

 handleSelect(url,url_arr){
      this.$router.push('/empty');
       this.$router.push(url);
 }

保存代碼后,測試下效果,發(fā)現(xiàn)頁面同一個菜單多次點擊也會刷新頁面了。但是這種方式有個問題,由于它是跳到空頁面再跳回的,所以如果頁面渲染的稍微慢點,我們會可以發(fā)現(xiàn)url上會閃一下,當然這種問題應該沒啥影響。

方式二

在根組件APP.vue中用v-if控制router-view,實現(xiàn)一個刷新方法,具體操作如下:如果你的APP.vue中有reload方法了,你就可以在你要點擊菜單刷新的頁面調(diào)用(調(diào)用方法下面說),如果沒有,則在App.vue中加入 <router-view v-if="isRouterAlive"></router-view> ,data中不要忘記定義 isRouterAlive:true

image.png

在methods中加入reload方法

 reload(){
        this.isRouterAlive=false;
        this.$nextTick(() => {
          this.isRouterAlive=true;
        })
 },

上面準備好了,剩下的就是handleSelect中如何調(diào)用App.vue中的方法了,有兩種方式能調(diào)用到reload方法:

  1. 使用provide、inject調(diào)用首先,我們用provide在父組件提供reload方法,使其可供handleSelect使用
   provide (){
     return {
       reload:this.reload
     }
  },

然后我們在要調(diào)用的地方引入inject:['reload']

image.png

最后就可以直接調(diào)用,點擊一次菜單刷新一次就OK了。

 handleSelect(){
      this.reload();
 }
  1. 使用事件總線(Event Bus):在 Vue 中,可以創(chuàng)建一個全局的事件總線對象,將  App.vue  中的方法注冊到事件總線上,然后在 Element UI 組件中觸發(fā)相應事件,從而調(diào)用  App.vue  中的方法。在 main.js (或者其他入口文件)中創(chuàng)建事件總線:
import Vue from 'vue';
// 創(chuàng)建事件總線
Vue.prototype.$bus = new Vue();

App.vue 中注冊方法到事件總線上:

methods: {
 reload(){
        this.isRouterAlive=false;
        this.$nextTick(() => {
          this.isRouterAlive=true;
        })
 },
},
created() {
  // 注冊方法到事件總線上
  this.$bus.$on('app-reload', this.reload);
}

在handleSelect中調(diào)用下,我們點擊菜單就可以刷新啦

 handleSelect(url,url_arr){
   this.$bus.$emit('app-reload');
 }

結(jié)語

無論哪種方式,都能解決我的問題,最終選擇哪種方式都無所謂,方法一最簡單,對于我做的管理后臺來說,用的人少,有些用戶體驗有點瑕疵也沒關系;但是如果使用人數(shù)較多,客戶要求比較高的,可以使用第二種方法。

到此這篇關于解決vue中菜單再次點擊內(nèi)容不刷新問題的文章就介紹到這了,更多相關vue中菜單再次點擊內(nèi)容不刷新內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue中跳轉(zhuǎn)界面的3種實現(xiàn)方法

    vue中跳轉(zhuǎn)界面的3種實現(xiàn)方法

    這篇文章主要給大家介紹了關于vue中跳轉(zhuǎn)界面的3種實現(xiàn)方法,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • vite中如何使用@?配置路徑別名

    vite中如何使用@?配置路徑別名

    這篇文章主要介紹了vite中如何使用@?配置路徑別名,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Vue js with語句原理及用法解析

    Vue js with語句原理及用法解析

    這篇文章主要介紹了Vue js with語句原理及用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • vue 插件的方法代碼詳解

    vue 插件的方法代碼詳解

    在開發(fā)項目的時候,我們一般都用 vue-cli 來避免繁瑣的 webpack 配置和 template 配置。這篇文章主要介紹了如何寫一個 vue 插件,需要的朋友可以參考下
    2019-06-06
  • vue Tab切換以及緩存頁面處理的幾種方式

    vue Tab切換以及緩存頁面處理的幾種方式

    相信tab切換對于大家來說都不算陌生,后臺管理系統(tǒng)中多會用到。如果不知道的話,可以看一下瀏覽器上方的標簽頁切換,大概效果就是這樣。
    2021-05-05
  • vue實現(xiàn)頁面內(nèi)容禁止選中功能,僅輸入框和文本域可選

    vue實現(xiàn)頁面內(nèi)容禁止選中功能,僅輸入框和文本域可選

    今天小編就為大家分享一篇vue實現(xiàn)頁面內(nèi)容禁止選中功能,僅輸入框和文本域可選,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue自定義封裝指令以及實際使用

    vue自定義封裝指令以及實際使用

    市面上大多數(shù)關于Vue.js自定義指令的文章都在講語法,很少講實際的應用場景和用例,下面這篇文章主要給大家介紹了關于vue自定義封裝指令以及實際使用的相關資料,需要的朋友可以參考下
    2022-01-01
  • 使用vue.js制作分頁組件

    使用vue.js制作分頁組件

    本文給大家分享的是個人在使用vue.js制作的文章和評論的分頁組件,并使用webpack打包起來,這里推薦給大家,有需要的小伙伴可以參考下
    2016-06-06
  • vue函數(shù)input輸入值請求時延遲1.5秒請求問題

    vue函數(shù)input輸入值請求時延遲1.5秒請求問題

    這篇文章主要介紹了vue函數(shù)input輸入值請求時延遲1.5秒請求問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 在antd Table中插入可編輯的單元格實例

    在antd Table中插入可編輯的單元格實例

    這篇文章主要介紹了在antd Table中插入可編輯的單元格實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10

最新評論