bug复现:
父组件需要传参数autoinputFs,autoinputFs为true的时候,子组件中的输入框(只有一个)自动聚焦,很多组件复用mp3Search,有些页面不需要,所以定义了autoinputFs控制输入框是否自动聚焦
<template><div>
<mp3Search :autoinputFs="true"></mp3Search></div>
</template>
子组件接受并监听
<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,立即执行一次监听函数
解决代码:
watch: {autoinputFs: {handler(newVal) {console.log(newVal, "newVal");this.$nextTick(() => {this.$refs.myInput.focus();});},immediate: true, // 立即执行一次监听函数},},
解决的方法不难,但是我觉得更需要知道的是为什么会产生这个bug