You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VueJS 3中点击按钮聚焦输入框功能失效如何解决

错误原因

这段代码在Vue 3 <script setup> 环境下无法运行,是两个用法不符合<script setup>的语法规则导致的:

  • <script setup>是编译时语法糖,脚本作用域内没有绑定组件实例的this,直接访问this会得到undefined,根本读不到$refs属性
  • <script setup>中获取模板ref的方式和选项式API不同,必须显式声明和模板ref属性名完全一致的ref变量,不能通过实例的$refs对象访问DOM引用。
修正后的可运行代码
<template>
  <button @click="focusInput">Click me to focus on the input</button>
  <input ref="inputField" type="text">
</template>

<script setup>
import { ref } from 'vue'
// 变量名必须和模板上ref="inputField"的属性值完全一致
const inputField = ref(null)

const focusInput = () => {
  // 组件挂载完成后,ref的.value属性指向对应的input DOM元素
  inputField.value.focus()
}
</script>
补充说明

如果你使用的是Vue 3的选项式API写法(不使用<script setup>,在普通<script>标签内导出组件配置),原本的this.$refs.inputField.focus()写法是可以正常运行的,该写法仅在<script setup>模式下不适用。

内容的提问来源于stack exchange,提问作者Mishen Thakshana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 08:06:22