
出现这个的原因是获取的元素没有出来 等同于undefined.foucus
以ref获取元素为例this.$refs.ipt.focus()
直接写该代码会报错
解决办法一:在外面加定时器
解决办法二:$nextTick
<template>
<div>
<button v-if="isShow" @click="tabFn">按钮</button>
<input ref="ipt" v-else type="text" />
</div>
</template>
<script>
export default {
data() {
return {
isShow: true,
};
},
methods:{
tabFn(){
this.isShow=false
// 方法一
// setTimeout(() => {
// this.$refs.ipt.focus()
// }, 500);
// 方法二
this.$nextTick(()=>{
this.$refs.ipt.focus()
})
}
}
};
</script>
<style>
</style>
在Vue中,当尝试立即聚焦使用ref获取的元素时,可能会遇到因元素尚未渲染完成导致的错误。本文介绍了两种解决方案:一是使用setTimeout延迟执行;二是利用$nextTick确保在DOM更新后执行聚焦操作。示例代码展示了如何在模板和方法中正确使用这两种方法。
4974





