一:可以做到响应式的方法:一下方法可以做到数组改变,页面上数据相应
1、删除数组最后一位元素:pop()
2、向数组最后面添加元素:push() 。注意:可以添加多个元素,比如 letters.push( ‘a’ , ‘b’ )
3、删除数组第一位元素:shift()
4、向数组最前面添加元素:unshift()。注意:可以添加多个元素,比如 letters.unshift( ‘a’ , ‘b’ )
5、删除(或插入或替换)数组元素:splice()
比如删除元素:splice(2) 是 从第二位开始删除后面所有元素;
比如删除元素:splice(2,3) 是 从第二位开始删除3个元素;
比如插入元素:splice(2,0,‘j’,‘k’) 是 在第二位开始插入元素 ‘j’,‘k’;
比如替换元素:splice(2,3,‘m’,‘n’,‘p’) 是 在第二位开始替换3个元素为’m’,‘n’,‘p’;
6、数组排序:sort();
7、数组内容反转:reverse();
<div id = 'app'>
<div v-for='item in data'>{{ item }}</div>
</div>
<button @click='btnClick'>按钮</button>
<script>
const app = new Vue({
el:'#app',
data:{
letters:['a','b','c']
},
methods:{
btnClick(){
this.letters.push('aaa');
}
}
})
</script>
二:不可以做到响应式的方法
1、通过索引值修改数组中元素
// 数组值虽然变化了,但是并没有相应到页面上,此时的数组值其实是 ['aaa','b','c']
btnClick(){
this.letters[0]('aaa');
// 替换方法一:splice()
this.letters.splice(0,1,'aaa')
// 替换方法二:Vue.set()。vue内部函数(这个也是响应式的)
Vue.set(this.letters,0,'aaa')
}