亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue中watch監(jiān)聽(tīng)屬性新舊值相同的問(wèn)題解決方案

 更新時(shí)間:2023年08月10日 10:28:42   作者:前端李十三  
這篇文章主要給大家分享了Vue中watch監(jiān)聽(tīng)屬性新舊值相同問(wèn)題解決方案,如果有遇到相同問(wèn)題的朋友,可以參考閱讀本文

偵聽(tīng)器 _watch:

作用:可以偵聽(tīng)data和computed中數(shù)據(jù)的變化.

語(yǔ)法

watch: { "被偵聽(tīng)的屬性名" (newVal, oldVal){ } }

監(jiān)聽(tīng)簡(jiǎn)單數(shù)據(jù)類型時(shí)可以直接使用,而監(jiān)聽(tīng)復(fù)雜數(shù)據(jù)類型時(shí),例如當(dāng)我們只需要監(jiān)聽(tīng)data或者computed中對(duì)象的某個(gè)屬性時(shí),可以使用字符串的形式進(jìn)行監(jiān)聽(tīng).

//舉例: 
watch: {
?    //字符串形式  表示監(jiān)聽(tīng)item對(duì)象下的good_count屬性
?    'item.goods_count'(newval) {
?      if (newval <= 0) {
?        this.item.goods_count=1    
?      }
?    }
  }

在watch中,如果對(duì)對(duì)象進(jìn)行監(jiān)聽(tīng),只有對(duì)象obj被重新賦值時(shí),watch才會(huì)被監(jiān)聽(tīng)到,這個(gè)時(shí)候無(wú)法對(duì)obj里面的屬性的變化進(jìn)行監(jiān)聽(tīng),我們也可以給watch對(duì)象加上深度監(jiān)聽(tīng)屬性.

      handler(newval, oldval) {
        console.log("完整寫法,監(jiān)聽(tīng)復(fù)雜數(shù)據(jù)類型", newval);
      },
      deep: true, //表示開(kāi)啟深度監(jiān)聽(tīng)
      immediate: true, //立即監(jiān)聽(tīng),在頁(yè)面初始化時(shí),會(huì)監(jiān)聽(tīng)一次
    }

而監(jiān)聽(tīng)復(fù)雜數(shù)據(jù)類型,當(dāng)復(fù)雜數(shù)據(jù)類型被改變之后,newval的值改變,由于newval和oldval都指向同一個(gè)對(duì)象,導(dǎo)致oldval也會(huì)隨之改變,打印出來(lái)則沒(méi)有了old和new之分.

解決方法:在初始化的時(shí)候,深克隆一個(gè)oldval.

也有看其他人寫的文章解決方案,都大差不差,都是使用一個(gè)計(jì)算屬性加上深拷貝,看別人的回答時(shí)總感覺(jué)很拗口.于是自己總結(jié)了一下.

在我看來(lái),解決此問(wèn)題的關(guān)鍵在于:我們此時(shí)遇到的問(wèn)題就是新值與舊值指向同一個(gè)地址的問(wèn)題.而深拷貝的特點(diǎn)就是新開(kāi)辟一個(gè)地址儲(chǔ)存需要拷貝對(duì)象的所有屬性.然后指向這個(gè)新地址. 故 JSON.parse(JSON.stringify())能完美解決其中的問(wèn)題.然后與計(jì)算屬性合并達(dá)到監(jiān)聽(tīng)的屬性一旦變化,自動(dòng)新開(kāi)辟一個(gè)地址,儲(chǔ)存新值.而新值與舊值指向的地址不同,則解決了新值與舊值相同的問(wèn)題.

  <div id="app">
    <input type="text" v-model="lzy.age" />
  </div>
</template>
<script>
export default {
  name: "App",
  watch: {
    lzy2: {
      handler(newvalue, oldvalue) {
        console.log("新值");
        console.log(newvalue);
        console.log("舊值");
        console.log(oldvalue);
        console.log(oldvalue===this.lzy);
      },
      deep: true,
    },
  },
  data() {
    return {
      lzy: {
        gender: "man",
        age: 21,
      },
    };
  },
  computed: {
    lzy2(){
      return JSON.parse(JSON.stringify(this.lzy))
      // 因?yàn)橛?jì)算屬性一開(kāi)始就執(zhí)行了一次,相當(dāng)于在一開(kāi)始就深拷貝拿到了oldvalue,改變之后又再一次深拷貝,每一次深拷貝生成的對(duì)象都是指向不同的地址,所以oldvalue和newvalue是兩個(gè)不同的地址.
    },
  },
};
</script>
<style scoped>
</style>

到此這篇關(guān)于Vue中watch監(jiān)聽(tīng)屬性新舊值相同問(wèn)題解決方案的文章就介紹到這了,更多相關(guān)Vue watch監(jiān)聽(tīng)屬性新舊值相同內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue使用Luckysheet插件實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出

    vue使用Luckysheet插件實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出

    本文主要介紹了vue使用Luckysheet插件實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • 使用WebStorm運(yùn)行vue項(xiàng)目的詳細(xì)圖文教程

    使用WebStorm運(yùn)行vue項(xiàng)目的詳細(xì)圖文教程

    在WebStorm中怎么打開(kāi)一個(gè)已有的項(xiàng)目,這個(gè)不用多說(shuō),那么如何運(yùn)行一個(gè)vue項(xiàng)目呢?下面這篇文章主要給大家介紹了關(guān)于使用WebStorm運(yùn)行vue項(xiàng)目的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Vue頁(yè)面偶爾樣式錯(cuò)亂,刷新即恢復(fù)的問(wèn)題及解決

    Vue頁(yè)面偶爾樣式錯(cuò)亂,刷新即恢復(fù)的問(wèn)題及解決

    這篇文章主要介紹了Vue頁(yè)面偶爾樣式錯(cuò)亂,刷新即恢復(fù)的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • vue element-ui導(dǎo)航實(shí)現(xiàn)全屏/取消全屏功能

    vue element-ui導(dǎo)航實(shí)現(xiàn)全屏/取消全屏功能

    這篇文章主要介紹了vue element-ui導(dǎo)航實(shí)現(xiàn)全屏/取消全屏功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue如何判斷數(shù)組中的對(duì)象是否包含某個(gè)值

    vue如何判斷數(shù)組中的對(duì)象是否包含某個(gè)值

    這篇文章主要介紹了vue如何判斷數(shù)組中的對(duì)象是否包含某個(gè)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • elementui的默認(rèn)樣式修改方法

    elementui的默認(rèn)樣式修改方法

    下面小編就為大家分享一篇elementui的默認(rèn)樣式修改方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • Vue路由傳參props解耦的三種方式小結(jié)

    Vue路由傳參props解耦的三種方式小結(jié)

    這篇文章主要介紹了Vue路由傳參props解耦的三種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • vue.js開(kāi)發(fā)環(huán)境安裝教程

    vue.js開(kāi)發(fā)環(huán)境安裝教程

    這篇文章主要為大家詳細(xì)介紹了vue.js開(kāi)發(fā)環(huán)境的安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • element-ui自定義表格如何給input雙向綁定數(shù)據(jù)

    element-ui自定義表格如何給input雙向綁定數(shù)據(jù)

    這篇文章主要介紹了element-ui自定義表格如何給input雙向綁定數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue路由--網(wǎng)站導(dǎo)航功能詳解

    vue路由--網(wǎng)站導(dǎo)航功能詳解

    這篇文章主要介紹了vue路由--網(wǎng)站導(dǎo)航功能詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評(píng)論