要点:

之前 我们用原生js写的话,写id,通过dom操作获取元素进行操作

vue中用ref

并且可以在component上找到

这边this指向的就是app组件,

显示,其实ref就是id的代替者,只不过不需要再写dom元素操作了

其实就是你在哪个标签上加ref,就vue component 帮你收集哪个元素
比如这边在h1和btn上加了ref则在vue component的$ref中,收集了,title和btn元素

注意: 如果在一个组件上加上ref?会收集什么元素?

发现输出的就是那个App的子组件School组件的new component、
也就是说sc是School组件的实例对象

输出一波app的Vue Component
发现sch为School的实例对象


id与ref的差别
如果没有组件的话,确实id和ref没有区别
但是在组件上这两个就有区别了
验证:
把组件上ref换成id,用于dom操作输出

发现输出的是school组件中完整的结构

为什么:
因为是给School组件标签加的id,之后就会跑到School组件最外侧的根元素上,也就是School组件的div上


所以才会发现div上多了个id

对比组件的id和ref
获取id的话,得到的就是一个组件的完整dom

获取ref的话,得到的是组件的实例对象,当在组件间通信里,组件的实例对象非常重要



总结:

本文探讨了Vue中ref和id的区别。在原生JS中,id用于DOM操作,而在Vue中,ref提供了一种更便捷的方式来引用组件或元素。通过ref,可以直接获取组件实例,而不仅仅是DOM元素。当在组件上使用ref时,会得到该组件的实例对象,这对于组件间的通信至关重要。相比之下,id会附加到组件最外层的根元素上,导致获取的是整个组件的DOM结构。总结来说,ref适合于获取组件实例,而id则用于标识DOM元素。
675





