vue中的$EventBus.$emit、$on 遇到的問題

来源:https://www.cnblogs.com/yanyanliu/archive/2019/10/22/11723324.html
-Advertisement-
Play Games

今天在項目中遇到的一個需求: 在一個選項卡功能的頁面,出現的問題是,當點擊選項卡的某個選項時,會同時載入整個選項卡的數據,本身產品就很大,數據很多,所以這個問題無法忽略; 仔細研究下發現,當剛進入頁面時,只會載入當前一個tab的數據,這樣是正常的,但當再次點擊別的tab時,之前tab的介面就都連帶著 ...


今天在項目中遇到的一個需求:

  在一個選項卡功能的頁面,出現的問題是,當點擊選項卡的某個選項時,會同時載入整個選項卡的數據,本身產品就很大,數據很多,所以這個問題無法忽略;

仔細研究下發現,當剛進入頁面時,只會載入當前一個tab的數據,這樣是正常的,但當再次點擊別的tab時,之前tab的介面就都連帶著再次請求一邊,只要是不刷新頁面,就一直切換tab,一直會有前邊的tab數據介面重新請求,項目中tab實現是用的餓了麽ui的tab選項卡,在研究了餓了麽ui之後發現使用上沒有什麼問題,而且是子組件的v-if切換

1     <el-tabs v-model="activeName" @tab-click="tabClick" class="assetsIndex">
2       <el-tab-pane label="IP地址" name="ip" class="assetsIndextitle">
3         <FlawIp v-if="ipShow" />
4       </el-tab-pane>
5       <el-tab-pane label="網站" name="web" class="assetsIndextitle">
6         <FlawWeb v-if="webShow" />                                  index文件
7       </el-tab-pane>
8     </el-tabs>

這樣的話,切換的時候直接就將dom節點刪除了,當時在網上搜的懷疑是dom節點刪除,但事件沒有移除,但後來看了下,之前沒有用過監聽,要是使用移除監聽應該不好辦,所以整理下了思路發現,子組件是用$on接受參數的$emit發送的值,$emit,$on存在的bug就是會將之前的值累加,所以,它會將之前介面再走一遍,可能小項目看不出來什麼,但項目一旦大了,一個頁面就有好多介面,可能直接就崩了,所以,在接收參數之前一定要清楚下之前的值即可

1  this.$EventBus.$emit('nodeClick', {
2         id: 1                                別的文件發送id這個參數
3       })

this.$EventBus.$off("nodeClick")
 this.$EventBus.$on("nodeClick", ({ id }) => {
      this.getAccount(id);                         子組件接收參數
    });

 

 

2019-10-22

---恢復內容結束---

今天在項目中遇到的一個需求:

  在一個選項卡功能的頁面,出現的問題是,當點擊選項卡的某個選項時,會同時載入整個選項卡的數據,本身產品就很大,數據很多,所以這個問題無法忽略;

仔細研究下發現,當剛進入頁面時,只會載入當前一個tab的數據,這樣是正常的,但當再次點擊別的tab時,之前tab的介面就都連帶著再次請求一邊,只要是不刷新頁面,就一直切換tab,一直會有前邊的tab數據介面重新請求,項目中tab實現是用的餓了麽ui的tab選項卡,在研究了餓了麽ui之後發現使用上沒有什麼問題,而且是子組件的v-if切換

1     <el-tabs v-model="activeName" @tab-click="tabClick" class="assetsIndex">
2       <el-tab-pane label="IP地址" name="ip" class="assetsIndextitle">
3         <FlawIp v-if="ipShow" />
4       </el-tab-pane>
5       <el-tab-pane label="網站" name="web" class="assetsIndextitle">
6         <FlawWeb v-if="webShow" />                                  index文件
7       </el-tab-pane>
8     </el-tabs>

這樣的話,切換的時候直接就將dom節點刪除了,當時在網上搜的懷疑是dom節點刪除,但事件沒有移除,但後來看了下,之前沒有用過監聽,要是使用移除監聽應該不好辦,所以整理下了思路發現,子組件是用$on接受參數的$emit發送的值,$emit,$on存在的bug就是會將之前的值累加,所以,它會將之前介面再走一遍,可能小項目看不出來什麼,但項目一旦大了,一個頁面就有好多介面,可能直接就崩了,所以,在接收參數之前一定要清楚下之前的值即可

1  this.$EventBus.$emit('nodeClick', {
2         id: 1                                別的文件發送id這個參數
3       })

this.$EventBus.$off("nodeClick")
 this.$EventBus.$on("nodeClick", ({ id }) => {
      this.getAccount(id);                         子組件接收參數
    });

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • /****** Object: Table [dbo].[TEMP] Script Date: 2018-8-22 星期三 23:33:09 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[TE... ...
  • 本地有備份 ...
  • 本文截圖來源: https://blog.csdn.net/u010944388/article/details/86674078 https://www.cnblogs.com/jaday/p/6088368.html ...
  • 簡介 Oracle merge into命令,顧名思義就是“有則更新,無則插入”,這個也是merge into 命令的核心思想,在實際開發過程中,我們會經常遇到這種通過兩表互相關聯匹配更新其中一個表的某些欄位的業務,有時還要處理不匹配的情況下的業務。這個時候你會發現隨著表的數據量增加,類似這種業務場 ...
  • 鬼知道我是如何堅持下來的,如果非要找個理由,那或許是所謂的熱愛。 公眾號轉眼間寫了三年。寫的內容圍繞著安卓技術,源碼剖析,生活感悟,職場人生。 很慶幸的是,得到大家的支持,每一條留言都會是一次交流,看著後臺用戶有來有去,這才是該有的節奏。 這就如同呼吸一樣,說明我的公號有生命力。藉著這個時機,想聊聊 ...
  • 版本號0.1.54 看源碼之前,我先去看下官方文檔,對於其源碼的設計說明,文中所說的原生都是指android 看完官方文檔的說明,我有以下幾個疑問 第一個:容器是怎麼設計的? 第二個:native和flutter的channel的通道是如何設計的? 第三個:Flutter是適配層到底再做些什麼? 中 ...
  • 1.錯誤顯示 com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details log提示:Generate Signed APK: Errors while building APK. You can find ...
  • ![](https://img2018.cnblogs.com/blog/1170268/201910/1170268-20191023001452341-966459818.jpg) ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...