亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

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

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

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

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

查看控制臺

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

實際上還是上方useFocusController中的handleFocus改變了其值

三、找一下點(diǎn)擊選項后發(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	// 那么這時又發(fā)生了什么呢?
setSoftFocus()	/* 看起來像是這個方法導(dǎo)致的
	const _input = input.value || reference.value
    if (_input) {
      _input?.focus()
    }
*/

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

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

如果想在點(diǎn)擊選項后不觸發(fā)focus,那么就需要同時注釋這兩行代碼才行
在不破壞代碼功能的情況下,加入一個方法setSoftBlur和一個prop
用戶在單選時如果傳入了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ù)隊列與事件循環(huán),將在下方執(zhí)行setSoftFocus之后調(diào)用setSoftBlur()

五、效果如圖

第一個選擇框沒有

總結(jié)

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

相關(guān)文章

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

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

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

    vue實現(xiàn)倒計時獲取驗證碼效果

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

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

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

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

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

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

    這篇文章主要介紹了vue輪播組件實現(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表尾插入行的實例

    elementUi 中table表尾插入行的實例

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

    vue如何添加jest測試

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

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

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

    Vue transition過渡組件詳解

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

最新評論