如果你使用Vue開發(fā)過一段時間,你可能會注意到其中一個奇怪的問題,就是在一些情況下,focus()
方法并不能正確地定位到元素上。
比如下面這個例子:
<template>
<input ref="input" v-model="inputValue"/>
<button @click="focusInput">聚焦輸入框</button>
</template>
<script>
export default {
data() {
return {
inputValue: '',
};
},
methods: {
focusInput() {
this.$refs.input.focus();
},
},
};
</script>
這段代碼中,我們有一個輸入框和一個按鈕,當點擊按鈕時,我們調(diào)用focusInput
方法來讓輸入框聚焦。但是,如果你運行這段代碼,你會發(fā)現(xiàn)在某些情況下,比如在IE瀏覽器中,聚焦并不會生效。
這是因為在某些情況下,focus()
方法并不會正常工作。解決這個問題的方法是,將focus()
方法放在Vue的$nextTick
方法中:
focusInput() {
this.$nextTick(() => {
this.$refs.input.focus();
});
},
這樣就可以解決聚焦無效的問題了。