欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

el-select單選時(shí)選擇后輸入框的is-focus狀態(tài)并沒有取消問題解決

 更新時(shí)間:2024年01月10日 15:57:31   作者:君子使物,不為物使  
這篇文章主要給大家介紹了關(guān)于el-select單選時(shí)選擇后輸入框的is-focus狀態(tài)并沒有取消問題的解決過程,文中通過圖文以及代碼示例將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下

前言

前兩天在封裝組件的時(shí)候,發(fā)現(xiàn)el-select 單選時(shí),選擇后輸入框的is-focus狀態(tài)并沒有取消,需要手動(dòng)點(diǎn)其它地方才會(huì)取消,于是想著找找為什么

一、通過調(diào)試源碼發(fā)現(xiàn)

輸入框在點(diǎn)擊選項(xiàng)后觸發(fā)blur,緊接著又觸發(fā)了一次focus 1.狀態(tài)樣式由計(jì)算屬性"wrapperKls"控制,又與“isFocused”相關(guān),且handleFocus和isFocused都由useFocusController提供

2.因此找到useFocusController的具體實(shí)現(xiàn),加入console.log就能觀察到focus觸發(fā)情況

查看控制臺(tái)

二、有devTools也可以觀察到,點(diǎn)擊選項(xiàng)后isFocused先變成false,又變成true

實(shí)際上還是上方useFocusController中的handleFocus改變了其值

三、找一下點(diǎn)擊選項(xiàng)后發(fā)生了什么

深扒一下,干了4件事

ctx.emit(UPDATE_MODEL_EVENT, option.value)	// ctx.emit('update:modelValue', val) 更新雙向綁定的值
emitChange(option.value)	// 值改變的情況下調(diào)用 ctx.emit('change', val) 觸發(fā)el-select的change事件
states.visible = false	// 那么這時(shí)又發(fā)生了什么呢?
setSoftFocus()	/* 看起來像是這個(gè)方法導(dǎo)致的
	const _input = input.value || reference.value
    if (_input) {
      _input?.focus()
    }
*/

四、經(jīng)過我的排除大法,有兩種情況會(huì)觸發(fā)的focus事件

  • 由states.visible改變觸發(fā)
  • 由setSoftFocus()方法觸發(fā)

如果想在點(diǎn)擊選項(xiàng)后不觸發(fā)focus,那么就需要同時(shí)注釋這兩行代碼才行
在不破壞代碼功能的情況下,加入一個(gè)方法setSoftBlur和一個(gè)prop
用戶在單選時(shí)如果傳入了autoBlur,那么

 const setSoftBlur = () => {
    const _input = input.value || reference.value
    if (_input) {
      _input?.blur()
    }
  }
	/**
     * @description when select one item, click option will let input blur
     */
    autoBlur: Boolean,

tip:使用setTimeout涉及js任務(wù)隊(duì)列與事件循環(huán),將在下方執(zhí)行setSoftFocus之后調(diào)用setSoftBlur()

五、效果如圖

第一個(gè)選擇框沒有

總結(jié)

到此這篇關(guān)于el-select單選時(shí)選擇后輸入框的is-focus狀態(tài)并沒有取消問題解決的文章就介紹到這了,更多相關(guān)el-select單選is-focus狀態(tài)沒有取消內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue3使用Echarts導(dǎo)致tooltip失效問題及解決方法

    Vue3使用Echarts導(dǎo)致tooltip失效問題及解決方法

    Vue3 使用 proxy 對(duì)象代理,而 echarts 則使用了大量的全等(===), 對(duì)比失敗從而導(dǎo)致了bug,這篇文章主要介紹了Vue3使用Echarts導(dǎo)致tooltip失效問題及解決方法,需要的朋友可以參考下
    2023-08-08
  • vue實(shí)現(xiàn)倒計(jì)時(shí)獲取驗(yàn)證碼效果

    vue實(shí)現(xiàn)倒計(jì)時(shí)獲取驗(yàn)證碼效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)倒計(jì)時(shí)獲取驗(yàn)證碼效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Vue-cli項(xiàng)目部署到Nginx服務(wù)器的方法

    Vue-cli項(xiàng)目部署到Nginx服務(wù)器的方法

    這篇文章主要介紹了Vue-cli項(xiàng)目部署到Nginx服務(wù)器的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Vue this.$router.push(參數(shù))實(shí)現(xiàn)頁面跳轉(zhuǎn)操作

    Vue this.$router.push(參數(shù))實(shí)現(xiàn)頁面跳轉(zhuǎn)操作

    這篇文章主要介紹了Vue this.$router.push(參數(shù))實(shí)現(xiàn)頁面跳轉(zhuǎn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue輪播組件實(shí)現(xiàn)$children和$parent 附帶好用的gif錄制工具

    vue輪播組件實(shí)現(xiàn)$children和$parent 附帶好用的gif錄制工具

    這篇文章主要介紹了vue輪播組件實(shí)現(xiàn),$children和$parent,附帶好用的gif錄制工具,需要的朋友可以參考下
    2019-09-09
  • 基于element-ui自定義封裝大文件上傳組件的案例分享

    基于element-ui自定義封裝大文件上傳組件的案例分享

    本文主要介紹了以element-ui基礎(chǔ)封裝大文件上傳的組件,包括斷點(diǎn)續(xù)傳,秒傳,上傳進(jìn)度條,封裝思想邏輯來源于el-upload 組件源碼,文中有具體案例分享,需要的朋友可以參考下
    2024-01-01
  • elementUi 中table表尾插入行的實(shí)例

    elementUi 中table表尾插入行的實(shí)例

    這篇文章主要介紹了elementUi 中table表尾插入行的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue如何添加jest測(cè)試

    vue如何添加jest測(cè)試

    這篇文章主要介紹了vue如何添加jest測(cè)試問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Vue官方文檔梳理之全局配置

    Vue官方文檔梳理之全局配置

    這篇文章主要介紹了Vue官方文檔梳理之全局配置,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • Vue transition過渡組件詳解

    Vue transition過渡組件詳解

    我們現(xiàn)在可以了解一下vue的過渡,vue在插入、更新以及移除DOM元素的時(shí)候,提供了很多不同方式過渡的效果,如果在css過渡自動(dòng)應(yīng)用class,在過渡鉤子函數(shù)中使用JavaScript直接操作DOM就可以了
    2022-08-08

最新評(píng)論