AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

Vue3問題:如何解決Watch監(jiān)聽對象數(shù)組失效,及如何停止監(jiān)聽?

來源: 責編: 時間:2023-11-16 09:39:23 308觀看
導(dǎo)讀一、需求分析,問題描述1、需求監(jiān)聽數(shù)組或?qū)ο螅薷钠鋵傩詳?shù)據(jù),但watch并沒有監(jiān)聽到變化,尋找原因和解決方式。2、問題怎樣正確使用watch監(jiān)聽對象和數(shù)組?怎樣停止watch監(jiān)聽?二、解決問題,答案速覽1、Watch監(jiān)聽器-監(jiān)聽Ref(1)監(jiān)聽

NLn28資訊網(wǎng)——每日最新資訊28at.com

一、需求分析,問題描述

1、需求

監(jiān)聽數(shù)組或?qū)ο螅薷钠鋵傩詳?shù)據(jù),但watch并沒有監(jiān)聽到變化,尋找原因和解決方式。NLn28資訊網(wǎng)——每日最新資訊28at.com

2、問題

  • 怎樣正確使用watch監(jiān)聽對象和數(shù)組?
  • 怎樣停止watch監(jiān)聽?

二、解決問題,答案速覽

1、Watch監(jiān)聽器-監(jiān)聽Ref

(1)監(jiān)聽單個ref對象

對于單個ref對象的監(jiān)聽,我們只需要直接監(jiān)聽即可,沒有套路。NLn28資訊網(wǎng)——每日最新資訊28at.com

<script setup>import { reactive, ref, watch, computed } from 'vue';// 定義數(shù)據(jù)let nameRef = ref('大澈')// 點擊事件-修改數(shù)據(jù)的值const handleChange = () => {  nameRef.value = '程序員大澈'}// 監(jiān)聽數(shù)據(jù)變化watch(nameRef, (newValue, oldValue) => {  console.log(`新的值是:${newValue},舊的值是:${oldValue}`);})</script>

NLn28資訊網(wǎng)——每日最新資訊28at.com

(2)監(jiān)聽單個ref對象的值-基本類型值

對于單個ref對象的基本類型值的監(jiān)聽,我們需要借助getter函數(shù)監(jiān)聽。直接監(jiān)聽會報警告,并且監(jiān)聽不到變化。NLn28資訊網(wǎng)——每日最新資訊28at.com

<script setup>import { reactive, ref, watch, computed } from 'vue';// 定義數(shù)據(jù)let nameRef = ref('大澈')// 點擊事件-修改數(shù)據(jù)的值const handleChange = () => {  nameRef.value = '程序員大澈'}// 監(jiān)聽數(shù)據(jù)變化watch(() => nameRef.value, (newValue, oldValue) => {  console.log(`新的值是:${newValue},舊的值是:${oldValue}`);})</script>

NLn28資訊網(wǎng)——每日最新資訊28at.com

(3)監(jiān)聽單個ref對象的值-復(fù)雜類型值

內(nèi)部自動將值轉(zhuǎn)為reactive對象,監(jiān)聽reactive對象的詳細見下文。NLn28資訊網(wǎng)——每日最新資訊28at.com

NLn28資訊網(wǎng)——每日最新資訊28at.com

(4)監(jiān)聽多個ref對象或其值

對于多個ref對象或其值的監(jiān)聽,我們需要使用數(shù)組將watch監(jiān)聽器的目標包裹。NLn28資訊網(wǎng)——每日最新資訊28at.com

<script setup>import { reactive, ref, watch, computed } from 'vue';// 定義數(shù)據(jù)let nameRef111 = ref('大澈111')let nameRef222 = ref('大澈222')// 點擊事件-修改數(shù)據(jù)的值const handleChange = () => {  nameRef111.value = '程序員大澈111'  nameRef222.value = '程序員大澈222'}// 監(jiān)聽數(shù)據(jù)變化watch([nameRef111, () => nameRef222.value], (newValue, oldValue) => {  console.log(`新的值是:${newValue[0]},舊的值是:${oldValue[0]}`);})</script>

NLn28資訊網(wǎng)——每日最新資訊28at.com

2、Watch監(jiān)聽器-監(jiān)聽Reactive

(1)監(jiān)聽單個reactive對象-對象類型值

對于單個reactive對象的對象類型值的監(jiān)聽,我們只需要直接監(jiān)聽即可,沒有套路。NLn28資訊網(wǎng)——每日最新資訊28at.com

但此時我們會發(fā)現(xiàn),watch的新值和舊值是相同的,為什么會這樣呢?又怎么解決呢?NLn28資訊網(wǎng)——每日最新資訊28at.com

因為對于引用類型數(shù)據(jù),賦值存的是地址,地址指向的是堆,所以無論值怎么改變,新舊對象都指向同一個地址。NLn28資訊網(wǎng)——每日最新資訊28at.com

至于解決的辦法很簡單, 我們不去直接監(jiān)聽一個引用類型,而是去監(jiān)聽引用類型中一個具體的值即可。NLn28資訊網(wǎng)——每日最新資訊28at.com

<script setup>import { reactive, ref, watch, computed } from 'vue';// 定義數(shù)據(jù)let dataReactive = reactive({  name: '大澈',})// 點擊事件-修改數(shù)據(jù)的值const handleChange = () => {  dataReactive.name = '程序員大澈'}// 監(jiān)聽數(shù)據(jù)變化watch(dataReactive, (newValue, oldValue) => {  console.log(`新的值是:${newValue.name},舊的值是:${oldValue.name}`);})</script>

NLn28資訊網(wǎng)——每日最新資訊28at.com

(2)監(jiān)聽單個reactive對象-對象類型值-基本類型屬性

對于單個reactive對象的對象類型值的基本類型屬性的監(jiān)聽,我們需要借助getter函數(shù)監(jiān)聽。直接監(jiān)聽會報警告,并且監(jiān)聽不到變化。NLn28資訊網(wǎng)——每日最新資訊28at.com

值得注意的是,watch的新值和舊值是不同的了。NLn28資訊網(wǎng)——每日最新資訊28at.com

NLn28資訊網(wǎng)——每日最新資訊28at.com

(3)監(jiān)聽單個reactive對象-對象類型值-對象類型屬性

對于單個reactive對象的對象類型值的對象類型屬性的監(jiān)聽,我們需要借助getter函數(shù)監(jiān)聽。直接監(jiān)聽會報警告,并且監(jiān)聽不到變化。NLn28資訊網(wǎng)——每日最新資訊28at.com

如果是監(jiān)聽整個對象類型屬性,只有進行整個對象替換時,才不需要開啟deep深度監(jiān)聽。其它時候,如修改、刪除、新增,都需要開啟deep深度監(jiān)聽,才能監(jiān)聽數(shù)據(jù)的變化。NLn28資訊網(wǎng)——每日最新資訊28at.com

如果是監(jiān)聽對象類型屬性中的某個屬性值,則不需要開啟deep深度監(jiān)聽。NLn28資訊網(wǎng)——每日最新資訊28at.com

<script setup>import { reactive, ref, watch, computed } from 'vue';// 定義數(shù)據(jù)let dataReactive = reactive({  obj: {    age: 18,  },})// 點擊事件-修改數(shù)據(jù)的值const handleChange = () => {  dataReactive.obj.age = 99}// 監(jiān)聽數(shù)據(jù)變化watch(() => dataReactive.obj, (newValue, oldValue) => {  console.log(`新的值是:${newValue.age},舊的值是:${oldValue.age}`);}, {  deep: true,})</script>

NLn28資訊網(wǎng)——每日最新資訊28at.com

(4)監(jiān)聽單個reactive對象-對象類型值-數(shù)組類型屬性

同監(jiān)聽單個reactive對象-對象類型值-對象類型屬性。NLn28資訊網(wǎng)——每日最新資訊28at.com

(5)監(jiān)聽單個reactive對象-數(shù)組類型值

所有情況都同監(jiān)聽單個reactive對象-對象類型值。NLn28資訊網(wǎng)——每日最新資訊28at.com

(6)監(jiān)聽多個reactive對象值或其屬性值

同監(jiān)聽多個ref對象或其值。NLn28資訊網(wǎng)——每日最新資訊28at.com

三、問題解析,知識總結(jié)

1、怎樣正確使用watch監(jiān)聽對象和數(shù)組?

內(nèi)容如上。NLn28資訊網(wǎng)——每日最新資訊28at.com

2、怎樣停止watch監(jiān)聽?

有的時候,我們可能只需要監(jiān)聽一次。在監(jiān)聽之后,我們就需要取消對watch的監(jiān)聽。此時我們可以這樣做,將watch監(jiān)聽器賦值給一個變量,在取消監(jiān)聽的時候調(diào)用此變量即可。NLn28資訊網(wǎng)——每日最新資訊28at.com

<script setup>import { reactive, ref, watch, computed } from 'vue';// 定義數(shù)據(jù)let nameRef = ref('大澈')// 點擊事件-修改數(shù)據(jù)的值const handleChange = () => {  nameRef.value = '程序員大澈'}// 點擊事件-停止對應(yīng)的watch監(jiān)聽數(shù)據(jù)const handleStopChange = () => {  stopWatch()}// 監(jiān)聽數(shù)據(jù)變化const stopWatch = watch(() => nameRef.value, (newValue, oldValue) => {  console.log(`新的值是:${newValue},舊的值是:${oldValue}`);})</script>

本文鏈接:http://www.tebozhan.com/showinfo-26-26545-0.htmlVue3問題:如何解決Watch監(jiān)聽對象數(shù)組失效,及如何停止監(jiān)聽?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: .NET Core下有熱門的ORM框架使用方法

下一篇: Android | LruCache緩存策略

標簽:
  • 熱門焦點
  • 5月安卓手機好評榜:魅族20 Pro奪冠

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數(shù)據(jù)來源安兔兔評測,收集時間2023年5月1日至5月31日,僅限國內(nèi)市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • JavaScript 混淆及反混淆代碼工具

    介紹在我們開始學(xué)習(xí)反混淆之前,我們首先要了解一下代碼混淆。如果不了解代碼是如何混淆的,我們可能無法成功對代碼進行反混淆,尤其是使用自定義混淆器對其進行混淆時。什么是混
  • 一篇文章帶你了解 CSS 屬性選擇器

    屬性選擇器對帶有指定屬性的 HTML 元素設(shè)置樣式。可以為擁有指定屬性的 HTML 元素設(shè)置樣式,而不僅限于 class 和 id 屬性。一、了解屬性選擇器CSS屬性選擇器提供了一種簡單而
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個大新聞是Meta AI推出了新的開源授權(quán)的大型語言模型Llama 2。這是一項非常重要的進展:Llama 2可免費用于研究和商業(yè)用途。(幾小時前,swyy發(fā)現(xiàn)它已從LLaMA 2更名為Lla
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 講故事上個月我寫過一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,當時用的是 GDIView + WinDbg 把問題搞定,前者用來定位泄露資源,后者用來定位泄露代碼,后面有朋友反
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯(lián)網(wǎng)企業(yè)調(diào)整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 華為Mate60系列模具曝光:采用碩大圓形后置相機模組+拼接配色方案

    據(jù)此前多方爆料,今年華為將開始恢復(fù)一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將迎來更新,有望在9-10月份帶來全新的華為Mate60
  • OPPO Reno10 Pro英雄聯(lián)盟定制禮盒公布:薩勒芬妮同款配色夢幻十足

    5月24日,OPPO推出了全新的OPPO Reno 10系列,包含OPPO Reno10、OPPO Reno10 Pro和OPPO Reno10 Pro+三款新機,全系標配了超光影長焦鏡頭,是迄今為止拍照
  • 電博會與軟博會實現(xiàn)"線下+云端"的雙線融合

    在本次“電博會”與“軟博會”雙展會利好條件的加持下,既可以發(fā)揮展會拉動人流、信息流、資金流實現(xiàn)快速交互流動的作用,繼而推動區(qū)域經(jīng)濟良性發(fā)展;又可以聚
Top