Vue3中watch監視reactive對象方法詳解

在Vue3中,使用watch監視reactive對象時,需根據監視的目標選擇合適的方法。以下是詳細的步驟和說明:

1.?監視整個reactive對象

  • 自動深度監視:直接監視reactive對象時,Vue3會默認啟用深度監視,無需設置deep: true

javascript

復制

import { reactive, watch } from 'vue';const state = reactive({count: 0,user: { name: 'Alice' }
});// 監視整個state對象的變化
watch(state, (newState) => {console.log('State changed:', newState);
});// 修改內部屬性會觸發回調
state.user.name = 'Bob'; // 觸發

2.?監視基本類型屬性

  • 使用Getter函數:對于基本類型(如count),使用Getter函數確保正確追蹤。

javascript

復制

watch(() => state.count, (newCount, oldCount) => {console.log(`Count changed: ${oldCount} → ${newCount}`);
});state.count++; // 觸發,輸出: Count changed: 0 → 1

3.?監視對象類型屬性

  • 需要深度監視:使用Getter函數返回對象屬性,并顯式設置deep: true以檢測內部變化。

javascript

復制

watch(() => state.user,(newUser, oldUser) => {console.log('User changed:', newUser);},{ deep: true } // 啟用深度監視
);state.user.name = 'Charlie'; // 觸發
  • 替換對象時觸發:即使未設置deep: true,替換整個對象也會觸發。

javascript

復制

watch(() => state.user, (newUser) => {console.log('User replaced:', newUser);
});state.user = { name: 'David' }; // 觸發

4.?注意事項

  • 舊值問題:深度監視時,newValueoldValue指向同一對象,需通過其他方式獲取舊值。

  • 直接監視響應式屬性:避免直接監視屬性(如watch(state.user, ...)),可能導致替換后失效。

總結

  • 整個對象:直接監視,自動深度。

  • 基本屬性:使用Getter,無需deep

  • 對象屬性:使用Getter +?deep: true檢測內部變化。

通過合理選擇監視方式,可以高效追蹤reactive對象及其嵌套屬性的變化。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/78755.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/78755.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/78755.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何制定性能調優策略

目錄 性能測試攻略 微基準性能測試 宏基準性能測試 熱身問題 多 JVM 情況下的影響 合理分析結果,制定調優策略 推薦閱讀 性能測試攻略 性能測試是提前發現性能瓶頸,保障系統性能穩定的必要措施。下面我先給你介紹兩種常用 的測試方法,幫…

HarmonyOS-ArkUI V2裝飾器@Local裝飾器:組件內部狀態

@Local裝飾器的作用 @Local裝飾器是用來裝飾組件內的狀態的。而且它修飾的變量可以成為數據源。Local裝飾器,作用跟名字差不多,重點突出了“本地”的特性,也就是使用的范圍僅僅限制在組件內部。且它在初始化的時候必須是在本地進行初始化的,不能在外部組件,同時也禁止了外…

Linux線程屬性與多線程開發:API詳解與實戰代碼解析

Linux 線程的屬性 線程池 多線程的創建 線程的屬性 引入 我們設想一個場景,使用pthread_detach時,發現線程早就已經結束了,這時候pthread_detach還能正常發揮清理線程的 獨有空間 的作用嗎? 答案是可以的,但是這難…

測試第二課-------測試分類

作者前言 🎂 ??????🍧🍧🍧🍧🍧🍧🍧🎂 ?🎂 作者介紹: 🎂🎂 🎂 🎉🎉&#x1f389…

MySQL安裝實戰分享

一、在 Windows 上安裝 MySQL 1. 下載 MySQL 安裝包 訪問 MySQL 官方下載頁面。選擇適合你操作系統的版本。一般推薦下載 MySQL Installer。 2. 運行安裝程序 雙擊下載的安裝文件&#xff08;例如 mysql-installer-community-<version>.msi&#xff09;。如果出現安全…

數據庫預熱

介紹 Database Warm-up &#x1f9e0; 一句話理解 數據庫是在應用啟動階段&#xff0c;提前建立數據庫連接 或 執行輕量 SQL 操作&#xff0c;從而 加快首個請求的響應速度 的一種優化手段 &#x1f3af; 為什么需要數據庫預熱&#xff1f; 當 FastAPI 或其他 Web 服務剛啟…

SearXNG

SearXNG 什么是 SearXNG &#xff1f;說白了&#xff0c;其實就是一個免費開源的搜索引擎。那為什么要本地安裝它呢&#xff1f; 看它官網的解釋(翻譯)&#xff0c;當然&#xff0c;其中官方也有一篇文檔解釋了為什么需要部署使用私有示例&#xff1a;為什么使用私有實例&…

js 顏色轉換分析

一、十六進制轉RGB function hexToRgba(hex) {// 移除 # 字符hex hex.replace(#, );// 處理簡寫形式如 #fffif (hex.length 3) {hex hex[0] hex[0] hex[1] hex[1] hex[2] hex[2];}// 轉換為十進制const r parseInt(hex.substring(0, 2), 16); // 截圖前兩位&#xff0…

智能資源管理機制-重傳機制

一、發送端資源管理的核心機制 1. 滑動窗口&#xff08;Sliding Window&#xff09; 這是TCP協議的核心優化設計&#xff1a; 窗口動態滑動&#xff1a;發送端不需要保留所有已發送的分組&#xff0c;只需維護一個"發送窗口"窗口大小&#xff1a;由接收方通告的接…

基于SSM+Layui畢業設計選題系統源碼

項目介紹 基于SSM+Layui畢業設計選題系統源碼,可以作為課程設計項目參考,該系統分為三個角色: 管理員:用戶管理(對學生和老師的信息進行維護),統計分析(對老師課題情況以及學生選題情況信息進行維護),修改密碼 老師:個人信息維護,畢業設計題目管理,報名學生管理…

通過uri獲取文件路徑手機適配

青銅版本 return contentResolver.query(this, arrayOf(MediaStore.MediaColumns.DATA), null, null).let {if (it?.moveToFirst() true) {val columnIndex it.getColumnIndex(MediaStore.MediaColumns.DATA)val path it.getString(columnIndex)it.close()return path}&quo…

vue模擬撲克效果

vue模擬撲克效果 效果圖&#xff1a; step1:C:\Users\wangrusheng\PycharmProjects\untitled18\src\views\Home.vue <template><div class"poker-container"><!-- 使用復合數據對象實現雙行顯示 --><divv-for"(card, index) in POKER_…

基礎數學:圖論與信息論

微積分與概率論由此進&#xff1a;基礎數學&#xff1a;微積分和概率與統計-CSDN博客 線代與優化理論由此進&#xff1a;基礎數學&#xff1a;線性代數與優化理論-CSDN博客 數值分析與離散數學由此進&#xff1a;基礎數學&#xff1a;數值分析與離散數學-CSDN博客 四、圖論與…

構建智能期貨交易策略分析應用:MCP與AI的無縫集成

引言 隨著金融科技的快速發展&#xff0c;數據驅動的交易決策已成為期貨交易領域的重要趨勢。本文將深入探討一個結合了Model Content Protocol (MCP)和AI技術的期貨交易策略分析應用——Futures MCP。該應用不僅提供了豐富的技術分析工具&#xff0c;還通過MCP協議與大型語言…

0x02.Redis 集群的實現原理是什么?

回答重點 Redis 集群&#xff08;Redis cluster&#xff09;是通過多個 Redis 實例組成的&#xff0c;每個主節點實例負責存儲部分的數據&#xff0c;并且可以有一個或多個從節點作為備份。 具體是采用哈希槽&#xff08;Hash Slot&#xff09;機制來分配數據&#xff0c;將整…

基本的DOS命令

一.打開CMD方式&#xff1a; winR 輸入cmd 開始系統命令提示符 在任意文件夾下&#xff0c;shift&#xff0b;鼠標右擊&#xff0c;在此處打開命令 資源管理器的地址欄前面輸入cmd 以管理員身份打開cmd&#xff1a;選擇以管理員方式運行 二.常用的Dos命令 #盤符切換 盤符…

深度剖析:架構評估的常用方法與應用

架構評估是確保系統架構滿足需求、性能和質量等方面要求的重要環節&#xff0c;以下是一些常見的架構評估方法的詳細介紹&#xff1a; 一、基于調查問卷或檢查表的評估方法 1.方法概述&#xff1a;該方法通過設計一系列針對性的問題或檢查項&#xff0c;形成問卷或檢查表&…

代碼隨想錄算法訓練營第十六天

LeetCode題目: 530. 二叉搜索樹的最小絕對差501. 二叉搜索樹中的眾數236. 二叉樹的最近公共祖先3272. 統計好整數的數目(每日一題) 其他: 今日總結 往期打卡 530. 二叉搜索樹的最小絕對差 跳轉: 530. 二叉搜索樹的最小絕對差 學習: 代碼隨想錄公開講解 問題: 給你一個二叉搜…

基于雙閉環PID控制器的永磁同步電機控制系統匝間故障Simulink仿真

歡迎微?關注“電擊小子程高興的MATLAB小屋”獲取巨額優惠 1.模型簡介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2013Rb&#xff09;軟件。建議采用matlab2013 Rb及以上版本打開。&#xff08;若需要其他版本可聯系代為轉換&#xff0c;高于該版本的matlab均可正…

02-libVLC的視頻播放器:播放音視頻文件以及網絡流

libvlc_new(0, nullptr)功能:創建并初始化libVLC的核心實例,是使用所有libVLC功能的前提。 參數:第一個參數:參數數量(通常設為0)第二個參數:參數列表(通常為nullptr,表示使用默認配置)返回值:成功返回libvlc_instance_t*指針,失敗返回nullptr。注意事項:可通過參…