面试题:Vue 中怎么获取 DOM 节点?

在 Vue 中获取 DOM 节点有几种常见方法,以下是常用的方式:

1. 使用 ref 属性

Vue 提供了 ref 属性,可以直接在模板中标记一个元素或组件,然后通过 this.$refs 在 JavaScript 中访问。

<template>
  <div>
    <div ref="myElement">这是一个 DOM 元素</div>
  </div>
</template>

<script>
export default {
  mounted() {
    // 获取 DOM 节点
    const element = this.$refs.myElement;
    console.log(element); // 输出 DOM 元素
  }
}
</script>

2. 使用原生 JavaScript 方法

你也可以使用原生 JavaScript 的方法,如 document.getElementByIddocument.querySelector 等来获取 DOM 节点。

<template>
  <div>
    <div id="myElement">这是一个 DOM 元素</div>
  </div>
</template>

<script>
export default {
  mounted() {
    // 使用原生 JavaScript 获取 DOM 节点
    const element = document.getElementById('myElement');
    console.log(element); // 输出 DOM 元素
  }
}
</script>

3. 使用 $el 属性

如果你需要获取组件根元素的 DOM 节点,可以使用 this.$el

<template>
  <div>
    <div>这是一个 DOM 元素</div>
  </div>
</template>

<script>
export default {
  mounted() {
    // 获取组件根元素的 DOM 节点
    const rootElement = this.$el;
    console.log(rootElement); // 输出根元素的 DOM 节点
  }
}
</script>

4. 使用 vnode.elm

在某些高级场景中,你可以通过 vnode.elm 获取 DOM 节点,但这种方式通常不推荐在常规开发中使用。

<template>
  <div>
    <div>这是一个 DOM 元素</div>
  </div>
</template>

<script>
export default {
  mounted() {
    // 通过 vnode.elm 获取 DOM 节点
    const element = this.$vnode.elm;
    console.log(element); // 输出 DOM 元素
  }
}
</script>

总结

  • ref:最推荐的方式,适合在 Vue 组件中获取特定元素或子组件的引用。
  • 原生 JavaScript:适合在需要直接操作 DOM 的场景,但可能会与 Vue 的响应式系统产生冲突。
  • $el:适合获取组件根元素的 DOM 节点。

在 Vue 中,通常推荐使用 ref 来获取 DOM 节点,因为它更符合 Vue 的设计理念,且能更好地与 Vue 的响应式系统集成。

THE END
点赞13 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容