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>

$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 也可以是响应式的且可以被监听。(这点很好理解,因为itemRefsdata属性)

本系列目录

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值