Vue 3 迁移策略笔记—— 第1节:v-for 中的 Ref 数组
前言本笔记主要基于官方文档《迁移策略—— v-for 中的 Ref 数组》汇总而来。Vue 2.x v-for 中的 Ref 数组的问题在 Vue 2 中,在 v-for 语句中使用ref属性时,会生成refs数组插入$refs属性中。如下:<div v-for="item in 5" :key="item" :ref="item">{{ item }}</div>$ref
·
前言
本笔记主要基于官方文档《迁移策略—— v-for 中的 Ref 数组》汇总而来。建议您以官方文档为主,本文为辅。这样您可以“以自己为主”审视的阅读,从而不被我的观点带偏。
Vue 2.x v-for 中的 Ref 数组的问题
在 Vue 2 中,在 v-for
语句中使用ref
属性时,会生成refs
数组插入$refs
属性中。
如下:
<div v-for="item in 5" :key="item" :ref="item">
{{ item }}
</div>
$refs
的结果如下:
由于当存在嵌套的v-for
时,这种处理方式会变得复杂且低效。
<div v-for="item in 5" :key="item" :ref="item">
<div v-for="y in 5" :key="y" :ref="y">
{{ item }} - {{ y }}
</div>
</div>
$refs
的结果如下:
Vue 3.x 的优化
因此,在 Vue 3,在 v-for
语句中使用ref
属性 将不再会自动在$refs
中创建数组。而是,将 ref
绑定到一个 function
中,在 function
中可以灵活处理ref
。
如下:
<template>
<div>
<h1>v-for Array Refs</h1>
<div>
<div v-for="item in 5" :key="item" :ref="setItemRef">
{{ item }}
</div>
<button @click="print">打印 $refs</button>
</div>
</div>
</template>
<script>
export default {
name: 'VforArrayRefs',
data() {
return {
itemRefs: []
};
},
methods: {
setItemRef(el) {
this.itemRefs.push(el);
},
print() {
console.log('打印 $refs:');
console.log(this.$refs);
console.log('打印 itemRefs');
console.log(this.itemRefs);
}
}
};
</script>
结果如下:
注意:
itemRefs
不强制要求是数组,也可以是对象;- 如有必要,
itemRef
也可以是响应式的且可以被监听。(这点很好理解,因为itemRefs
是data
属性)
本系列目录
更多推荐
已为社区贡献38条内容
所有评论(0)