【vue3避坑】--ref在标签上使用的问题

1,689 阅读1分钟

在vue2.x中,ref是这样定义的:ref被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的$refs对象上。如果在普通的DOM元素上使用,引用指向的就是DOM元素;如果用在子组件上,引用就指向组件实例。 因此,在vue2中可以在标签上使用ref去识别DOM元素。

在vue3中,ref的意义发生了重大的变换, ref 接受一个内部值并返回一个响应式且可变的 ref 对象。ref 对象具有指向内部值的单个 property .value。 在此基础上,vue3并没有覆盖vue2.x关于ref的功能,同样可以用ref识别DOM元素。

(在此建议大家严格规范代码,避免不必要的坑/(ㄒoㄒ)/~~)

在vue3中使用ref需要注意一点,那就是在标签上如果定义了ref(如ref="tableRef"),那么在setup中必须先进行ref变量的定义,如const tableRef = ref(null);

如果未在setup中定义,虽然开发环境并没有出现任何报错提示,但是当对代码进行打包时,会出现如下报错:

b1d6398cb45dfd2845168d5fbc2d491.jpg

结束语:在vue3项目中,如果在DOM上使用了ref的话,必须在setup中先定义,否则打包会报错。