Vue 3 如何不使用原生DOM方法获取输入框的DOM属性
Vue中无需原生DOM方法获取输入框属性的方案
作为Vue新手,你可以用Vue官方提供的ref特性来安全获取DOM元素的属性,完全不需要document.querySelector、getElementById这类原生方法,具体分Vue3和Vue2两种场景:
Vue3 实现方式
- 在模板中给输入框添加
ref标识:
<input ref="myInput" id="myInputId" class="myInputClass" type="text"/>
- 在组件的
setup函数中创建对应的响应式ref变量,并在组件挂载后访问元素属性:
import { ref, onMounted } from 'vue' export default { setup() { // 创建与模板ref同名的响应式变量 const myInput = ref(null) // 组件挂载完成后再访问DOM元素,此时元素已渲染 onMounted(() => { if (myInput.value) { const inputId = myInput.value.id const inputClass = myInput.value.className const inputType = myInput.value.type console.log('id:', inputId, 'class:', inputClass, 'type:', inputType) } }) // 必须返回ref变量,才能在模板中关联 return { myInput } } }
Vue2 实现方式
- 同样先在模板中添加
ref标识:
<input ref="myInput" id="myInputId" class="myInputClass" type="text"/>
- 在组件的
mounted钩子中通过this.$refs获取元素并读取属性:
export default { mounted() { const inputElement = this.$refs.myInput const inputId = inputElement.id const inputClass = inputElement.className const inputType = inputElement.type console.log('id:', inputId, 'class:', inputClass, 'type:', inputType) } }
注意事项
- 一定要在组件挂载完成后(比如
onMounted/mounted钩子)访问ref,否则DOM元素还未渲染,ref的值会是null。 - ref是Vue官方推荐的操作DOM方式,它会自动适配Vue的生命周期,比原生DOM方法更符合Vue的响应式逻辑,避免直接操作DOM带来的潜在问题。
内容的提问来源于stack exchange,提问作者Soon
相关产品推荐
相关产品推荐

