vue3数组改动支持响应式
时间: 2023-11-04 17:59:28 浏览: 90
Vue3中的数组改动支持响应式,也就是说,当数组发生改变时,视图会自动更新。
在Vue2中,通过改变数组的方法(如push,pop,splice等),是无法触发视图更新的。需要手动调用Vue的$set方法或者使用数组的变异方法,才能使视图更新。
而在Vue3中,数组的改动会自动触发视图更新。这是因为Vue3使用了Proxy来代理数组,当数组发生改动时,Proxy会自动触发视图更新。
例如,以下代码中的arr数组发生改变后,视图会自动更新:
```javascript
<script>
import { ref } from 'vue'
export default {
setup() {
const arr = ref([1,2,3])
const handleAdd = () => {
arr.value.push(4)
}
return {
arr,
handleAdd
}
}
}
</script>
<template>
<div>
<ul>
<li v-for="item in arr" :key="item">{{ item }}</li>
</ul>
<button @click="handleAdd">添加</button>
</div>
</template>
```
当点击按钮添加元素后,视图会自动更新,显示新添加的元素。
需要注意的是,使用数组的变异方法(如push,pop,splice等)可以触发视图更新,但是直接给数组赋值或使用索引修改数组元素是无法触发视图更新的。例如,以下代码中的arr数组修改元素后,视图不会自动更新:
```javascript
arr[0] = 4 // 不会触发视图更新
arr.value[0] = 4 // 不会触发视图更新
arr.value.splice(0, 1, 4) // 会触发视图更新
```
阅读全文