vue的非响应式情况

本文讨论了Vue框架中遇到的非响应式情况,包括数组下标更新不触发视图更新的问题以及通过直接修改数组长度导致的响应式失效。提出了解决方案,如利用`Vue.set`或`this.$set`来确保数组变化的响应性,并针对数组长度的修改,推荐使用`splice`方法来保持响应性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue的非响应式情况

  1. 数组的下标
  <div id="app">
    <button @click = "change"> 点击 </button>
    <ul>
      <li v-for = ' (item,index) in list ' :key = 'index'> 
          <p> {{ item }} </p>
      </li>
    </ul>
  </div>
  new Vue({
    el: '#app',
    data: {
      list: ['a','b','c']
    },
    methods: {
      change () {
        // this.list[0] = 'junge'
        this.$set(this.list,'0','junge')
      }
    }
  })
  • 解决方案: 使用 Vue.set || this.$set
  1. 数组的length
  • 当我们删除一个数组时,可以使用 arr.length = 0,但是vue不会响应
  • 解决方案: 使用splice(newLength)

  new Vue({
    el: '#app',
    data: {
      list: ['a','b','c']
    },
    methods: {
      change () {
        // this.list.length = 0
        this.list.splice(0)
      }
    }
  })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值