获取不到 element plus 中 el-input 对外暴露的方法

初学 vue3 时,写了个 todoList,列表渲染出来每一个 todo,点击『 修改 』将 todo 变成 el-input,想要其变成输入框时自动获取焦点,这时给 el-input 加上 autofocus 属性时是无效的,因其只有在页面初次渲染时才会自动获取焦点,所以调用官方提供的 api(el-input 向外 defineExpose  暴露出的若干个方法)来主动使其获取焦点,但是在点击『 修改 』的回调中通过 inputRef.value 获取不到其暴露的方法,原因如下:

页面初始化时,显示的是每一个 span todo,而不是 el-input,在点击『 修改 』时,将点击的 todo 变成 el-input,但一开始我是先去调用的获取焦点的 api,再将其变成 el-input,这时 el-input 在页面中都没有渲染出来,因此必须先将 todo 变成 el-input 再调用方法,同时需要在调用方法前使用 nextTick() 使页面的 DOM 变成最新的,不然也是无效果的

 总结:

  1. 调用子组件暴露的方法时,需确保子组件在页面中是渲染出来了的
  2. 如果是 v-for 渲染出来的多个子组件,多个子组件共享一个 ref,那么 ref.value 获取到的是一个数组
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值