Vue中v-for更新檢測的操作方法
阿新 • • 發佈:2021-10-22
口訣:
- 陣列變更方法,就會導致 v-for 更新,頁面更新
- 陣列非變更方法:返回新陣列,就不會導致 v-for 更新,更新值檢測不到可採用覆蓋或者 this.$set()
陣列變更方法如下:
1. arr.push()從後面新增元素
arr.push(5)
2. arr.pop()從後面刪除元素,只能是一個
arr.pop()
3. arr.shift()從前面刪除元素,只能刪除一個
arr.shift()
4. arr.unshift()從前面新增元素,返回值時新增完後陣列長度
arr.unshift(8)
5. arr.splice(i,n)刪除從 i (索引值)開始之後刪除的 N(刪除的個數)個數
let arr = [1,2,3,4,5] console.log(arr.splice(2,2)) //[3,4] console.log(arr) // [1,5]
6. arr.sort()將陣列進行排序,返回值排好的陣列
let arr = [2,10,6,1,22,3] console.log(arr.sort()) // [1,6] let arr1 = arr.sort((a,b) =>a - b) console.log(arr1) // [1,22] let arr2 = arr.sort((a,b) =>b-ahttp://www.cppcns.com) console.log(arr2) // [22,1]
7. arr.reverse() 將陣列反轉
let arr = [1,5]
console.log(arr.reverse()) // [5,http://www.cppcns.com3,1]
console.log(arr) // [5,1]
陣列非變更方法如下:
1. arr.concat()連線兩個陣列
let arr = [1,3EGaVhA,5]
console.log(arr.concat([1,2])) // [1,5,2]
console.log(arr) // [1,5]
2. arr.slice(start,end)切去索引 start 到 end 索引值,不包含 start 索引值
let arr = [1,5] console.log(arr.slice(1,3)) // [2,3]
覆蓋方法
<li v-for="(val,index) in arr" :key="index">
{{ val }}
</li>
<button @click="sliceBtn">擷取前3個</button>
sliceBtn(){
// 2. 陣列slice方法不會造成v-for更新
// slice不會改變原始陣列
// this.arrEGaVhA.slice(0,3)
// 解決v-for更新 - 覆蓋原始陣列
let newArr = this.arr.slice(0,3)
this.arr = newArr
},
this.$set()方法
<li v-for="(val,index) in arr" :key="index"> {{ val }} </li> <button @click="sliceBtn">更新下標0的值</button> sliceBtn(){ // 更新某個值時,v-for是檢測不到的 // this.arr[0] = 1000 // 解決- this.$set() // 引數1:更新目標結構 // 引數2:更新位置 // 引數3:更新值 let newArr = this.arr.slice(0,
到此這篇關於中v-for更新檢測的文章就介紹到這了,更多相關vue v-for更新檢測內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!