VUE3 入门教程 Vue 3.0 v-for中的Ref数组

2024-02-25 开发教程 VUE3 入门教程 匿名 3

在 Vue 2 中,在 v-for里使用的 refattribute 会用 ref 数组填充相应的 $refsproperty。当存在嵌套的 v-for时,这种行为会变得不明确且效率低下。

在 Vue 3 中,这样的用法将不再在 $ref中自动创建数组。要从单个绑定获取多个 ref,请将 ref绑定到一个更灵活的函数上 (这是一个新特性):

<div v-for="item in list" :ref="setItemRef"></div>

结合选项式 API:

export default {
data() {
return {
itemRefs: []
}
},
methods: {
setItemRef(el) {
this.itemRefs.push(el)
}
},
beforeUpdate() {
this.itemRefs = []
},
updated() {
console.log(this.itemRefs)
}
}

结合组合式 API:

import { ref, onBeforeUpdate, onUpdated } from 'vue'
export default {
setup() {
let itemRefs = []
const setItemRef = el => {
itemRefs.push(el)
}
onBeforeUpdate(() => {
itemRefs = []
})
onUpdated(() => {
console.log(itemRefs)
})
return {
itemRefs,
setItemRef
}
}
}

注意:

  • itemRefs不必是数组:它也可以是一个对象,其 ref 会通过迭代的 key 被设置。
  • 如果需要,itemRef也可以是响应式的且可以被监听。