Vue中this.$set的使用


項目中碰到一個問題,改變一個對象的屬性,從控制台打印結果看,屬性已經發生改變,但沒有更新到視圖中

解決:使用this.$set(target,key,value);

百度解釋:向響應式對象中添加一個屬性,並確保這個新屬性同樣是響應式的,且觸發視圖更新。它必須用於向響應式對象上添加新屬性,因為 Vue 無法探測普通的新增屬性。

注:target:要更改的數據源(可以是對象或者數組);       key:要更改的具體數據  value :重新賦的值

<template>
  <div>
    <p v-for="(item,index) in items" :key="index">{{item.message}}</p>
    <button @click="changeDataHandle">更改數據</button>
  </div>
</template>
<script>
export default {
  data() {
    return {
      // 測試數據
      items: [{id: '1',message: 'one'},{id: '2',message: 'two'},{id: '3',message: 'three'}],
    }
  },
  mounted() {
    this.items[0] = {id: '0',message: '測試數據'};
    console.log('items==>>',this.items);//打印結果可以發現,items[0]的數據已經改變,但顯示未變
  },
  methods: {
    // 點擊時,this.$set改變數據,顯示同時改變
    changeDataHandle() {
      this.$set(this.items,0,{message: '更改后的值',id: '0'});
    }
  }
}
</script>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM