vue基础_v-for更新监测

vue基础 v-for更新监测

目标: 当v-for遍历的目标结构改变, Vue触发v-for的更新

情况1: 数组翻转

情况2: 数组截取

情况3: 更新值

口诀:

数组变更方法, 就会导致v-for更新, 页面更新

数组非变更方法, 返回新数组, 就不会导致v-for更新, 可采用覆盖数组或this.$set()

<template>
  <div>
      <ul>
           <li v-for="(item,index) in arr " :key="index">
          {{item}}
          </li>
      </ul>
      <button @click="reverseBtn">reverse()翻转数组</button>
      <button @click="pushBtn">push()追加一个数据</button>
      <button @click="sliceBtn">slice()提取数据</button>
      <button @click="updateOne">slice()修改第一项数据</button>
  </div>
</template>

<script>
// push() / pop() / shift() / unshift() / splice() / sort() / reverse()
// vue封装好的
export default {
data () {
    return {
        arr:['刘备','关羽','张飞','赵云'],
    }
},
methods:{
    reverseBtn(){
        this.arr.reverse()
    },
    pushBtn(){
        this.arr.push('黄忠')
    },
    sliceBtn(){
    const res =  this.arr.slice(0,3) //从 0 开始取 ,取前三个
    console.log(res);
    this.arr = res
    },
    updateOne(){
        // vue主要是对改变数组的方法封装了更新监测
        // 直接通过索引修改,页面无法更新
        // this.arr[0] = '带头大哥'

        // 可以通过 this.set 修改索引的某一项
        this.$set(this.arr,0,'带头大哥')
    }
}
}
</script>

<style>

</style>

这些方法会触发数组改变, v-for会监测到并更新页面

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()

这些方法不会触发v-for更新

  • slice()
  • filter()
  • concat()

注意: vue不能监测到数组里赋值的动作而更新, 如果需要请使用Vue.set() 或者this.$set(), 或者覆盖整个数组

总结: 改变原数组的方法才能让v-for更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Henry_ww

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值