当前位置: 首页 > 知识库问答 >
问题:

前端 - vue3 自定义钩子 created 为什么可以获取 dom 元素?

韶兴德
2024-05-16

对 vue3 自定义指令产生了疑问 vue3 自定义指令官方文档

image.png

在这里官方提供了一系列声明周期的钩子函数,然后疑问点就产生了,为什么 createdbeforeMount 的第一个参数,也会被传递当前元素节点
image.png

(并且在实际应用中也确实可以获取到对应的 dom

但是在模版中正常的生命周期钩子中,这两个时机是无法获取到 dom 的,这是为什么?

共有1个答案

太叔高义
2024-05-16

因为自定义指令就是挂载在对应的元素上面的啊……所以 el 就是可以拿到的,但是因为不同的生命周期。所以 el 元素并不一定已经被插入父 DOM中,仅仅只是用 Document.createElement() 在内存中创建了对应的元素(只是举个例子,并不一定正确)。直到 mounted 时才真正被挂载(插入)到父级DOM中。

也就是说在 mounted 钩子之前,我们对其进行指令式的DOM操作时没有用的,比如说我们想要给对应的元素做自动聚焦(focus)。那么在 createdbeforeMount 这两个钩子中操作 el.focus() 是无效的。需要改变思路成给 el 元素添加 autofocus 这样的自动聚焦的属性。


自定义指令 | Vue.js

 类似资料:
  • forwardRef可以获取子组件内DOM节点: 请问下,获取子组件DOM的意义是什么?

  • 和其它版本控制系统一样,Git 能在特定的重要动作发生时触发自定义脚本。 有两组这样的钩子:客户端的和服务器端的。 客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。 你可以随心所欲地运用这些钩子。 安装一个钩子 钩子都被存储在 Git 目录下的 hooks 子目录中。 也即绝大部分项目中的 .git/hooks 。 当你用 git init 初始

  • 自定义主题 在项目中改变 SCSS 变量 Element 的 theme-chalk 使用 SCSS 编写,如果你的项目也使用了 SCSS,那么可以直接在项目中改变 Element 的样式变量。新建一个样式文件,例如 element-variables.scss,写入以下内容: 为什么可以覆盖element的scss变量?element的scss不是已经被编译好为css了吗,scss变量按说都已经

  • 本文向大家介绍详解在Vue中通过自定义指令获取dom元素,包括了详解在Vue中通过自定义指令获取dom元素的使用技巧和注意事项,需要的朋友参考一下 vue.js 是数据绑定的框架,大部分情况下我们都不需要直接操作 DOM Element,但在某些时候,我们还是有获取DOM Element的需求的;  在 vue.js 中,获取某个DOM Element常用的方法是将这个元素改成一个组件 (comp

  • vue3.js通过ref的方式获取子元素失败 Html <test ref="testdata"></test> js: 打印出来为null

  • 例如,我在语法中定义了几个lexer规则: 我需要以某种方式标记关键字(“int”、“float”和其他),当我使用TokenStream获取令牌时,我可以通过一些自定义符号对其进行过滤。 有可能吗? 现在我只看到一种方法——将必要的词汇组合成某种规则。 使现代化 我尝试应用下面第一个答案的第一个选项,但遇到了下一个问题:我得到一个错误:“TOKENNAME不是可识别的令牌名称” 因为这是一个问题