" />

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

Vue多層數(shù)據(jù)結(jié)構(gòu)響應(yīng)式失效,視圖更新失敗問題

 更新時間:2024年02月29日 09:27:42   作者:布依前端  
這篇文章主要介紹了Vue多層數(shù)據(jù)結(jié)構(gòu)響應(yīng)式失效,視圖更新失敗問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

在表單設(shè)計和流程設(shè)計時,碰到多層數(shù)據(jù)響應(yīng)式失效問題,當(dāng)時也是一臉懵,找不到錯在哪里,運行代碼不報錯,就是不能響應(yīng)式更新視圖了。

特此記錄一下填坑過程。

1、數(shù)據(jù)初始化結(jié)構(gòu)被破壞

表單配置需要config屬性,初始化時對象里沒有,導(dǎo)致vue響應(yīng)式失效,因為在頁面完成渲染之后,vue就已經(jīng)完成了響應(yīng)式綁定,對于監(jiān)聽且沒有屬性的字段將會失去數(shù)據(jù)的響應(yīng)式,從而無法實時更新視圖。

先看看這個對象,是修復(fù)之前的結(jié)構(gòu)。

formDesign: {
	process:{},
	list: []
}

修復(fù)后的數(shù)據(jù)結(jié)構(gòu),每一個需要響應(yīng)式的屬性,初始化頁面時都需要正確的結(jié)構(gòu)。

否則將失去響應(yīng)式的后果。

formDesign: {
	process:{},
	list: [],
	config: {}
}

2、js-delete刪除未觸發(fā)數(shù)據(jù)更新

在調(diào)用js刪除vue的data的數(shù)據(jù)后,既是傳入組件的data綁定sync屬性和watch監(jiān)聽都將變成徒勞的,因為js的delete更新不是鏈?zhǔn)巾憫?yīng)式的,不會觸發(fā)vue的響應(yīng)式數(shù)據(jù)驅(qū)動更新視圖。

當(dāng)然這里針對是多層次數(shù)據(jù)結(jié)構(gòu),尤其是在流程設(shè)計,遞歸展示視圖和操作數(shù)據(jù)時最為常見。

解決辦法

使用vue的Vue.delete( target, propertyName/index )

官方解釋

  • 刪除對象的 property。
  • 如果對象是響應(yīng)式的,確保刪除能觸發(fā)更新視圖。
  • 這個方法主要用于避開 Vue 不能檢測到 property 被刪除的限制,但是你應(yīng)該很少會使用它。

官方解釋—深層響應(yīng)性

在 Vue 中,狀態(tài)都是默認(rèn)深層響應(yīng)式的。

這意味著即使在更改深層次的對象或數(shù)組,你的改動也能被檢測到。

你也可以直接創(chuàng)建一個淺層響應(yīng)式對象。

它們僅在頂層具有響應(yīng)性,一般僅在某些特殊場景中需要。

export default {
  data() {
    return {
      obj: {
        nested: { count: 0 },
        arr: ['foo', 'bar']
      }
    }
  },
  methods: {
    mutateDeeply() {
      // 以下都會按照期望工作
      this.obj.nested.count++
      this.obj.arr.push('baz')
    }
  }
}

總結(jié)

每一個需要響應(yīng)式的屬性,初始化頁面時都需要正確的data結(jié)構(gòu),不管數(shù)據(jù)結(jié)構(gòu)是否復(fù)雜,都應(yīng)該保持Vue響應(yīng)式的數(shù)據(jù)規(guī)范,避免踩坑,否則將失去響應(yīng)式的后果。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue項目配置 webpack-obfuscator 進(jìn)行代碼加密混淆的實現(xiàn)

    vue項目配置 webpack-obfuscator 進(jìn)行代碼加密混淆的實現(xiàn)

    這篇文章主要介紹了vue項目配置 webpack-obfuscator 進(jìn)行代碼加密混淆,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • vue3 Composition API使用示例教程

    vue3 Composition API使用示例教程

    Vue3新增了Composition API,我們只需將實現(xiàn)某一功能的相關(guān)代碼全部放進(jìn)一個函數(shù)中,然后return需要對外暴露的對象,這篇文章主要介紹了vue3 Composition API使用,需要的朋友可以參考下
    2022-12-12
  • Vue常用實例方法示例梳理分析

    Vue常用實例方法示例梳理分析

    在了解vue的常用的實例方法之前,我們應(yīng)該先要了解其常用的實例屬性,你能了解到的vue實例屬性有哪些呢?小編在這里就列舉了幾個常用的vue實例的屬性。大家可以一起參考學(xué)習(xí)一下
    2022-08-08
  • 淺談vue限制文本框輸入數(shù)字的正確姿勢

    淺談vue限制文本框輸入數(shù)字的正確姿勢

    這篇文章主要介紹了vue限制文本框輸入數(shù)字的正確姿勢,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • vue 獲取視頻時長的實例代碼

    vue 獲取視頻時長的實例代碼

    這篇文章主要介紹了vue 獲取視頻時長的實例代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • VUE3中Element table表頭動態(tài)展示合計信息

    VUE3中Element table表頭動態(tài)展示合計信息

    本文主要介紹了在Vue中實現(xiàn)動態(tài)合計兩個字段并輸出摘要信息的方法,通過使用監(jiān)聽器和深度監(jiān)聽,確保當(dāng)數(shù)據(jù)變化時能正確更新合計結(jié)果,具有一定的參考價值,感興趣的可以了解一下
    2024-11-11
  • vue結(jié)合leaflet實現(xiàn)熱力圖

    vue結(jié)合leaflet實現(xiàn)熱力圖

    本文主要介紹了vue實現(xiàn)熱力圖,結(jié)合leaflet.heat插件可以很容易的做出熱力圖,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • elementui實現(xiàn)標(biāo)簽頁與菜單欄聯(lián)動的示例代碼

    elementui實現(xiàn)標(biāo)簽頁與菜單欄聯(lián)動的示例代碼

    多級聯(lián)動是一種常見的交互方式,本文主要介紹了elementui實現(xiàn)標(biāo)簽頁與菜單欄聯(lián)動的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • Vue axios獲取token臨時令牌封裝案例

    Vue axios獲取token臨時令牌封裝案例

    這篇文章主要介紹了Vue axios獲取token臨時令牌封裝案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 解決Vue_localStorage本地存儲和本地取值問題

    解決Vue_localStorage本地存儲和本地取值問題

    這篇文章主要介紹了解決Vue_localStorage本地存儲和本地取值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07

最新評論