中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue?computed與watch怎么使用

發布時間:2023-02-03 09:26:09 來源:億速云 閱讀:113 作者:iii 欄目:開發技術

這篇文章主要講解了“Vue computed與watch怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Vue computed與watch怎么使用”吧!

computed用法

  • 響應式緩存

  • 每一個計算屬性都會被緩存起來,只要計算屬性所依賴的屬性發生變化,計算屬性就會重新執行,視圖也會更新

  • computed方法里面的屬性不能在Date中定義

  • .具有緩存性,頁面重新渲染值不變化,,計算屬性會立即返回之前的計算結果,而不必再次執行函數

data: {
    firstName: 'one',
    lastName: 'two'
  },
//計算方法
computed: {
allname:{
	//回調函數 當需要讀取當前屬性值是執行,根據相關數據計算并返回當前屬性的值
	get() {//
		return this.firstName + ' ' + this.lastName
	},
	//監視當前屬性值的變化,當屬性值發生變化時執行,更新相關的屬性數據
	set(val){
		const names = val.split(' ');
		this.firstName = names[0];
        this.lastName = names[1];
	}
}
},

watch用法

  • 需要在數據變化時執行異步或開銷較大的操作時,這個方式是最有用的

  • 應用:監聽props,$emit或本組件的值執行異步操作

  • 無緩存性,頁面重新渲染時值不變化也會執行

watch: {
    被監聽的數據: {
        handler(新值, 舊值) {
            相關代碼邏輯...
        }
    }
}

  • 被監聽的數據:data中定義的數據

  • 新值:該數據改變后的新值;

  • 舊值:該數據改變之前的值。

常見應用

  • 監聽本組件計算和監聽

  • 計算或監聽父傳子的props值

  • 分為簡單數據類型和復雜數據類型監聽,監聽方法如上watch的使用

  • 監聽vuex的state或者getters值的變化

computed:{
    stateDemo(){
        return this.$store.state.demoState;
    }
}
watch:{
    stateDemo(){
        console.log('vuex變化啦')
    }
}

常見錯誤

當修改父組件傳過來的值,會報錯

props:['listShop'],
    data(){
      return{}
    },
    created(){
      this.listShop=30
}

報錯,錯誤是說的避免直接修改父組件傳入的值,因為會改變父組件的值

解決方法1,如果傳的是簡單類型,就在data中重新定義一個變量,改變指向,復雜類型不行,復雜類型存的是指針

//不會有任何報錯,也不會影響父組件!
	props:['listShop'],
    data(){
      return{
        listShopChild:this.listShop //改變指向
      }
    },
    created(){
      this.listShopChild=30
    }

但如果是復雜類型,因為存的是指針,賦值給新變量也會改變原始變量值

方法:

1.手動深度克隆

2.Object.assign,只會對只是一級屬性復制,比淺拷貝多深拷貝了一層而已,所以還是無法達到深度克隆的目的.

3.強大的JSON.stringify和JSON.parse

4.直接用computed改變

//數組深度克隆:
var x = [1,2,3];
var y = [];
for (var i = 0; i < x.length; i++) {
    y[i]=x[i];
}
console.log(y);  //[1,2,3]
y.push(4);
console.log(y);  //[1,2,3,4]
console.log(x);  //[1,2,3]
//對象深度克隆:
var x = {a:1,b:2};
var y = {};
for(var i in x){
    y[i] = x[i];
}
console.log(y);  //Object {a: 1, b: 2}
y.c = 3;
console.log(y);  //Object {a: 1, b: 2, c: 3}
console.log(x);  //Object {a: 1, b: 2}
//函數深度克隆
//為什么函數可以直接賦值克隆?
//由于函數對象克隆之后的對象會單獨復制一次并存儲實際數據,因此并不會影響克隆之前的對象。所以采用簡單的復制“=”即可完成克隆。
var x = function(){console.log(1);};
var y = x;
y = function(){console.log(2);};
x();  //1
y();  //2
//方法三
const obj1 = JSON.parse(JSON.stringify(obj));
//方法四
computed:{
  listShopChild(){
    return this.listShop
   }
}

感謝各位的閱讀,以上就是“Vue computed與watch怎么使用”的內容了,經過本文的學習后,相信大家對Vue computed與watch怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

土默特右旗| 德化县| 江达县| 富宁县| 普安县| 泰兴市| 彭水| 静安区| 苗栗县| 横峰县| 广南县| 台州市| 堆龙德庆县| 息烽县| 绥棱县| 临澧县| 南郑县| 蒲城县| 滦平县| 古交市| 肃南| 镇安县| 精河县| 杭锦后旗| 桦南县| 长岭县| 合肥市| 卓尼县| 江达县| 惠安县| 左云县| 温宿县| 淮阳县| 台湾省| 云阳县| 突泉县| 小金县| 凉城县| 九江县| 昆明市| 佛教|