Vue更新data中的數據頁面不渲染

一、數據更新不觸發視圖更新

在Vue中,視圖的更新是響應式的,也就是說當數據變化時,相應的視圖也會自動更新。但是,在某些情況下,數據更新並不會立即觸發視圖更新,我們需要手動調用this.$forceUpdate()或者使data中的數據對象發生改變才可以更新視圖。

export default {
  data() {
    return {
      message: 'Hello'
    }
  },
  methods: {
    updateMessage() {
      this.message = 'Hello, Vue'
      //此處由於data中的message對象沒有發生改變,所以不會觸發視圖更新
    }
  },
  mounted() {
    setTimeout(() => {
      this.updateMessage()
      //通過調用updateMessage方法改變message,從而觸發視圖更新
    }, 3000)
    //3秒後更新message
  }
}

二、數組或對象更新不觸發視圖更新

在Vue中,當我們使用數組或對象來更新數據時,如果只是修改了其中某一項或某幾項,Vue並不會觸發視圖的更新。此時,我們需要使用Vue提供的set或者splice方法來實現響應式的更新。

export default {
  data() {
    return {
      list: [
        { name: 'Tom', age: 18 },
        { name: 'Jerry', age: 20 },
        { name: 'Lucy', age: 22 }
      ]
    }
  },
  methods: {
    updateList() {
      // 直接對list進行修改不會觸發視圖更新
      this.list[0].age = 20 //沒有觸發視圖更新
      this.list.push({ name: 'Lily', age: 24 }) //沒有觸發視圖更新

      // 通過this.$set或者Vue.set方法進行修改才可以觸發視圖更新
      this.$set(this.list[0], 'age', 20) //通過this.$set方法觸發視圖更新
      Vue.set(this.list, 3, { name: 'Sophie', age: 26 }) //通過Vue.set方法觸發視圖更新

      // 通過splice方法進行修改也可以觸發視圖更新
      this.list.splice(1, 1, { name: 'Mike', age: 23 }) //通過splice方法觸發視圖更新
    }
  },
  mounted() {
    setTimeout(() => {
      this.updateList()
    }, 3000)
  }
}

三、偵聽器中改變數據不觸發視圖更新

在Vue中,我們可以通過偵聽器來監聽數據的變化並進行相應的操作。但是,在偵聽器中直接改變數據並不會觸發視圖的更新。此時我們需要使用$nextTick方法或者手動調用this.$forceUpdate()來使視圖更新。

export default {
  data() {
    return {
      message: 'Hello'
    }
  },
  watch: {
    message(value) {
      //偵聽器中直接修改數據不會觸發視圖更新
      this.message = value + ', Vue'
      //手動調用this.$forceUpdate()或者使用$nextTick方法可以更新視圖
      //this.$forceUpdate()
      /*
      this.$nextTick(() => {
        this.message = value + ', Vue'
      })
      */
    }
  }
}

四、使用Object.assign或者spread運算符改變數據不觸發視圖更新

在Vue中,我們可以使用Object.assign方法或者ES6引入的spread運算符來將多個對象合併成一個新對象。但是,直接使用這兩個方法對data中的數據進行更新是不會觸發視圖的更新的。

export default {
  data() {
    return {
      title: 'Hello',
      content: 'World'
    }
  },
  methods: {
    updateData() {
      // 使用Object.assign或者spread運算符直接修改數據不會觸發視圖更新
      Object.assign(this.$data, { title: 'Hi' })
      // {...this.$data, title: 'Hi'}
    }
  }
}

五、computed計算屬性依賴數據更新但是不觸發視圖更新

在Vue中,我們可以使用計算屬性computed來計算一個值並且基於數據的變化而變化。但是,當依賴的數據發生變化時,計算屬性並不會馬上重新計算並更新視圖,而是會等到下一次使用計算屬性時,才重新計算並更新視圖。

export default {
  data() {
    return {
      title: 'Hello',
      content: 'World'
    }
  },
  computed: {
    message() {
      return `${this.title} ${this.content}`
    }
  },
  mounted() {
    setTimeout(() => {
      this.title = 'Hi'
    }, 3000)
    //3秒之後title發生變化,但視圖不會立刻更新
  }
}

原創文章,作者:JJWJT,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/349451.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
JJWJT的頭像JJWJT
上一篇 2025-02-15 17:10
下一篇 2025-02-15 17:10

相關推薦

  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • 使用Vue實現前端AES加密並輸出為十六進制的方法

    在前端開發中,數據傳輸的安全性問題十分重要,其中一種保護數據安全的方式是加密。本文將會介紹如何使用Vue框架實現前端AES加密並將加密結果輸出為十六進制。 一、AES加密介紹 AE…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29
  • Python爬取公交數據

    本文將從以下幾個方面詳細闡述python爬取公交數據的方法: 一、準備工作 1、安裝相關庫 import requests from bs4 import BeautifulSou…

    編程 2025-04-29
  • Python數據標準差標準化

    本文將為大家詳細講述Python中的數據標準差標準化,以及涉及到的相關知識。 一、什麼是數據標準差標準化 數據標準差標準化是數據處理中的一種方法,通過對數據進行標準差標準化可以將不…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29
  • Python如何打亂數據集

    本文將從多個方面詳細闡述Python打亂數據集的方法。 一、shuffle函數原理 shuffle函數是Python中的一個內置函數,主要作用是將一個可迭代對象的元素隨機排序。 在…

    編程 2025-04-29

發表回復

登錄後才能評論