bug复现:
父组件需要传参数autoinputFs,autoinputFs为true的时候,子组件中的输入框(只有一个)自动聚焦,很多组件复用mp3Search,有些页面不需要,所以定义了autoinputFs控制输入框是否自动聚焦
bash
<template>
<div>
<mp3Search :autoinputFs="true">
</mp3Search>
</div>
</template>
子组件接受并监听
bash
<el-input v-model="form.serchvalue" ref="myInput">
<i class="el-icon-search" slot="suffix"> </i>
</el-input>
props: {
autoinputFs: {
type: Boolean,
default: false,
},
},
watch: {
autoinputFs: {
handler(newVal) {
console.log(newVal, "newVal");
this.$nextTick(() => {
this.$refs.myInput.focus();
});
},
},
},
watch中的console.log()始终无法触发
解决方法:加上 immediate: true,立即执行一次监听函数
解决代码:
bash
watch: {
autoinputFs: {
handler(newVal) {
console.log(newVal, "newVal");
this.$nextTick(() => {
this.$refs.myInput.focus();
});
},
immediate: true, // 立即执行一次监听函数
},
},
解决的方法不难,但是我觉得更需要知道的是为什么会产生这个bug