• Vue——对象和数组操作的注意事项


    前言

    Vue是响应式的,所谓的“响应式”,是指当数据改变后,Vue 会通知到使用该数据的代码。例如,视图渲染中使用了数据,数据改变后,视图也会自动更新。对于引用类型的数组和对象而言,如下操作Vue不能做出响应.

    对于数组而言,Vue 不能检测以下变动:

    1. 当你利用索引直接设置一个项时,例如:
    2. 当你修改数组的长度时,例如:vm.items.length = newLength
    var vm = new Vue({
      data: {
        items: ['a', 'b', 'c']
      }
    })
    vm.items[1] = 'x' // 不是响应性的
    vm.items.length = 2 // 不是响应性的

    对于对象而言,Vue不能检测以下变动:

    1. Vue 不能检测对象属性的添加或删除
    var vm = new Vue({
      data: {
        a: 1
      }
    })
    // `vm.a` 现在是响应式的
    vm.b = 2
    // `vm.b` 不是响应式的

    Vue对上述问题提供的解决方法

    数组操作

    1.对于数组的元素的修改和增加

    // Vue.set
    Vue.set(vm.items, indexOfItem, newValue)
    // Array.prototype.splice
    vm.items.splice(indexOfItem, 1, newValue)

    2.对于数组的长度修改

    vm.items.splice(newLength)

    注意:array.splice(index,howmany,item1,.....,itemX);index:从数组的第几个下标开始操作;howmany:从index开始往后删除多少个元素;item1,...,itemX:新增元素

    对象操作

    //单个属性的操作
    Vue.set(vm.userProfile, 'age', 27)
    //多个属性的操作
    vm.userProfile = Object.assign({}, vm.userProfile, {
      age: 27,
      favoriteColor: 'Vue Green'
    })
  • 相关阅读:
    第01组 团队项目-需求分析报告
    团队项目-选题报告
    第08组 Beta冲刺(4/5)
    第08组 Beta冲刺(3/5)
    第08组 Beta冲刺(2/5)
    第08组 Beta冲刺(1/5)
    第08组 Alpha事后诸葛亮
    第08组 Alpha冲刺(6/6)
    第08组 Alpha冲刺(5/6)
    第08组 Alpha冲刺(4/6)
  • 原文地址:https://www.cnblogs.com/sheng-se/p/14110429.html
Copyright © 2020-2023  润新知