Vue - 数组方法

693 阅读2分钟

变异方法(修改原有数组)

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

  Vue对数据的处理一般都是响应式的,而原生JS数组方法对数据的处理在默认情况下都是非响应式的。要在Vue中使用这些数组方法就需要将它们变成响应式的,只有这样我们才能通过操作数组来改变页面模板内容。变异方法主要就是体现在这一层面,Vue将原来非响应式的数组方法处理成了响应式的。这些方法的共性就是都会影响原始的数组数据。

替换数组(生成新的数组)

  filter()   concat()   slice()

  以上三个方法的共性是返回一个新的数组,通过新的数组替换旧的数组来实现影像数据的变化,而不会改变原来数组的数据。

  下面举个栗子来综合演示一下Vue是如何使数组方法变成响应式的。

  以上就是响应式的效果,数据的变化直接影响页面内容的变化。

  下面再写一个删除数据的效果让整个栗子更加完整。

  以上响应式的效果是通过变异方法来实现的。下面看看替换数组如何实现响应式效果。

  除了用上面的API对数组进行操作以外,Vue还可以通过索引来直接操作对应的数组数据,但是索引处理数据的方式本身也不是响应式的,针对这个问题Vue也有对应的方法——数组响应式变化

数组响应式变化——修改响应式数据

  Vue.set(vm.items,indexOfltem,newValue)   vm.$set(vm.items,indexOfltem,newValue)   ①参数一表示要处理的数组名称   ②参数二表示要处理的数据所应   ③参数三表示要处理的数据的值

  下面举个栗子:

  首先尝试直接在页面模板挂载完成后就修改数据看看效果。

  结果是页面一点变化都没有,但后台打印出来的list中的第二项已经变成了lime。产生这种结果的原因是利用索引处理的数据不是响应式的。

  再用上面说到的API演示一下。

  这回效果就在页面中立竿见影了。

  以上方法除了可以处理数组之外还可以处理data中对象形式的数据,下面举个栗子。

  很多时候我们都需要往data里的对象动态地添加数据。

  得到的处理后的数据依然不是响应式的,在控制台调试不了。

  使用API后的效果如下: