<el-form >ref数据监测不到的原因

html 复制代码
<template>
  <el-form ref="container">
    <el-form-item>
      <el-input v-model="inputValue" placeholder="请输入内容"></el-input>
    </el-form-item>
  </el-form>
</template>

<script setup>
import { ref, onMounted, onUnmounted } from 'vue';
import { ElForm, ElFormItem, ElInput } from 'element-plus';

const inputValue = ref('');
const container = ref(null);

onMounted(() => {
  const handleKeydown = (event) => {
    if (event.key === 'Enter') {
      console.log('回车键被按下了!');
    }
  };
  // 通过 $el 获取组件的底层 DOM 元素
  if (container.value && container.value.$el) {
    container.value.$el.addEventListener('keydown', handleKeydown);
  }

  onUnmounted(() => {
    if (container.value && container.value.$el) {
      container.value.$el.removeEventListener('keydown', handleKeydown);
    }
  });
});
</script>

container.value.addEventListener is not a function 错误,是因为 container 作为 el - form 组件的 ref,container.value 拿到的是组件实例,而非原生 DOM 元素,而 addEventListener 是原生 DOM 元素的方法。

你若写成 container.value.addEventListener 就会报错。正确做法是使用组件实例的 $el 属性获取底层 DOM 元素,然后再添加事件监听器。

相关推荐
吃阿茶搽1 小时前
源码剖析:Standard组件架构与底层实现原理
javascript
卤蛋fg61 小时前
给 vxe-table 设置全局默认参数:setConfig、setIcon 与 setTheme
vue.js
WebInfra1 小时前
TanStack Start 框架正式支持 Rsbuild
前端·javascript·前端框架
TrisighT1 小时前
uni-app鸿蒙原生应用开发实战(下):核心功能实现与技术细节
vue.js·harmonyos
竹林8181 小时前
被合约事件搞到失眠?我踩了三天坑,终于写出一份监听智能合约事件的实战指南
前端·javascript
在逃花果山的小松1 小时前
容器化部署实战:从Dockerfile到Kubernetes上云
javascript
艾利克斯冰2 小时前
TypeScript 静态类型入门教程:可选静态类型与类型推导详
前端·javascript·typescript
GuWenyue2 小时前
告别命名混乱!5步掌握BEM规范,写出易维护的前端页面
前端·javascript·面试
无心使然2 小时前
Openlayers图层按需分层渲染到不同Canvas画布
前端·vue.js·gis