Hi,sam老师。

来源:7-2 项目需求分析

寂寞追不上我

2019-12-31

请问下,vue的ref是操作的真实dom还是说操作虚拟dom再映射到真实dom上?谢谢,新年快乐!

写回答

1回答

Sam

2020-01-01

hi,寂寞同学,元旦快乐。回答你的问题:

vue 的 ref 返回的是 VueComponent 或 DOM 对象,它的初始化在 patch 阶段,源码如下:

var ref = vnode.componentInstance || vnode.elm;

可以看到如果 vnode 是一个 Component,那么 ref 会获取 vnode.componentInstance,这是因为 ref 可能是组件的一个属性,这时会返回 VueComponent 对象。如果 vnode 是普通 DOM,那么会返回 vnode.elm,vnode.elm 存储的是真实 DOM 不是虚拟 DOM,打个断点测试如下代码:

vnode.elm instanceof Node // true

可以看到 vnode.elm 实际是真实 DOM。

希望可以帮到你!

2
2
Sam
回复
寂寞追不上我
是的,没区别
2020-01-01
共2条回复

Vue Element+Node.js开发企业通用管理后台系统

基于Element的中后台课程,一套中小型企业通用的后台管理系统

2829 学习 · 1714 问题

查看课程