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

Vue3使用hooks解決字典數(shù)據的顯示問題

 更新時間:2024年12月09日 08:37:50   作者:A黃俊輝A  
我們在使用 element-plus的時候,經常會使用一些字典數(shù)據, 在搜索框的時候,字典數(shù)數(shù)要使用 el-select el-option 來顯示,但是經常會遇到字典數(shù)據的顯示問題,所以本文給大家介紹了Vue3使用hooks解決字典數(shù)據的顯示問題,需要的朋友可以參考下

我們在使用 element-plus的時候,經常會使用一些字典數(shù)據, 在搜索框的時候,字典數(shù)數(shù)要使用 el-select el-option 來顯示,當在table表格的時候,我們通常記錄的是 字典數(shù)據的id , 又要把它改變成 字典數(shù)據的 name 屬性

因為上面的位置有很多表都會使用的, 所以我們在 vue3 中最好是寫一個公共的方法, 每個頁面都可以隨意使用, 這里, 我們就想到了使用 vue3中的 hooks

我們的字典的數(shù)據格式如下

hooks 文件的代碼如下:

import { getDictData } from '../../src/api/app'   //這里是字典列表的請求接口
import {ref,onMounted} from 'vue'

export default function(){
    const dictDataCanUse = ref([]);   //注意, 這里要定義成響應式的數(shù)據,其它頁才可以用,

	//getDictDataFun 接收兩個參數(shù),也可能是一個參數(shù), 如果是只接收一個參數(shù), 說明是要獲取字典列表,給 el-select el-option 等來使用的,如果是兩個參數(shù), 則說明是給 table-column中的顯示數(shù)據名稱來使用的
    const getDictDataFun = (str,value = "")=>{  //注意這個地方不能使用 async 和 await ,因為這個函數(shù)是要導出去給 模板使用的, 而如果加了 async ,則返回的是一個 promise 函數(shù), 頁面中用不了
        let label = ref("");     
        if(Object.keys(dictDataCanUse.value).length == 0 || dictDataCanUse.value[str] == undefined){  第一次請求的時候 是沒有值的
            dictDataCanUse.value[str] = [];  這里我們先的把數(shù)據賦成空數(shù)組,  不然后面的dictDataCanUse.value[str].find 這句會報錯
            let res =  getDictData({  
                type: str
            }).then(res=>{
                dictDataCanUse.value = res;  //這里我們請求并更改了 dictDataCanUse
            })
        }
        if(value){ //如果有value ,我們得到label來返回數(shù)據
            let labelitem = dictDataCanUse.value[str].find(item=>{
                return item.id == value
            })
            label.value = labelitem.name?labelitem.name:"";
        }
		// 如果 value 不為空,則返回 label ,如果為空, 則返回字典數(shù)據
        return value ? label : dictDataCanUse.value[str];
    }
    return {getDictDataFun}  //把這個方法 export 出去
}

上面就是一個 hooks 的方法了

引入到要使用的頁面去使用

import useDictDataCanUse from '@/hooks/useDictDataCanUse'
const { getDictDataFun } = useDictDataCanUse()

//------------
 在template中的使用
 如果是 el-select 中使用
   <el-form-item prop="source_from">
        <el-select class="w-[200px]" style="width:200px" v-model="queryParams.source_from" clearable placeholder="客戶來源">
           <el-option label="全部" value=""></el-option>
          <el-option v-for="(item,index) in getDictDataFun('source_from')" :key="index" :label="item.name" :value="parseInt(item.value)"></el-option>
   		</el-select>
 </el-form-item>

如果是table-column中使用
  <el-table-column label="渠道來源" prop="source_from">
                        <template v-slot:default ="{ row }">
                            <el-tag effect="plain">{{ getDictDataFun('source_from',row.source_from) }}</el-tag>
                        </template>
                    </el-table-column>
//-------------

以上就是用一個 hooks 解決了, 表格,查詢框中的字典顯示問題了,注意 hooks中返回的數(shù)據一定是 響應式數(shù)據 ref reactive 定義的, 因為這樣, 頁面標簽才會監(jiān)測到數(shù)據的變化,作出響應變化, (最主要的原因, 還是因為數(shù)據的請求是異步的,有可能頁面顯示的時候還沒有得到數(shù)據, 但是響應式的數(shù)據,就不會被異步來防礙了,大至是這個意思,細品一下)

到此這篇關于Vue3使用hooks解決字典數(shù)據的顯示問題的文章就介紹到這了,更多相關Vue3 hooks字典數(shù)據顯示問題內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue transx組件切換動畫庫示例詳解

    Vue transx組件切換動畫庫示例詳解

    這篇文章主要為大家介紹了Vue transx組件切換動畫庫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 解決vue打包后刷新頁面報錯:Unexpected token <

    解決vue打包后刷新頁面報錯:Unexpected token <

    這篇文章主要介紹了解決vue打包后刷新頁面報錯:Unexpected token <相關知識點,需要的朋友們參考下。
    2019-08-08
  • vue中echarts關系圖動態(tài)增刪節(jié)點以及連線方式

    vue中echarts關系圖動態(tài)增刪節(jié)點以及連線方式

    這篇文章主要介紹了vue中echarts關系圖動態(tài)增刪節(jié)點以及連線方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue - props 聲明數(shù)組和對象操作

    vue - props 聲明數(shù)組和對象操作

    這篇文章主要介紹了vue - props 聲明數(shù)組和對象操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 使用Vue3實現(xiàn)在瀏覽器端進行zip文件壓縮

    使用Vue3實現(xiàn)在瀏覽器端進行zip文件壓縮

    在前端開發(fā)中,我們時常需要處理文件上傳和下載的功能,本文主要和大家分享一下如何使用Vue3和JSZip庫在瀏覽器端實現(xiàn)zip文件壓縮,需要的可以參考下
    2024-05-05
  • 如何解決this.$refs.form.validate()不執(zhí)行的問題

    如何解決this.$refs.form.validate()不執(zhí)行的問題

    這篇文章主要介紹了如何解決this.$refs.form.validate()不執(zhí)行的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • vue中使用帶隱藏文本信息的圖片、圖片水印的方法

    vue中使用帶隱藏文本信息的圖片、圖片水印的方法

    這篇文章主要介紹了vue中使用帶隱藏文本信息的圖片、圖片水印的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • element-ui 中如何修改loading加載樣式

    element-ui 中如何修改loading加載樣式

    element-ui 中的 loading 加載功能,默認是全屏加載效果,設置局部,需要自定義樣式或者修改樣式,下面給大家分享實例代碼,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Vue 3 中使用 OpenLayers 實時顯示 zoom 及四角坐標的實現(xiàn)代碼

    Vue 3 中使用 OpenLayers 實時顯示 zoom 

    本文介紹了如何在 Vue 3 中使用 OpenLayers 來獲取地圖的 zoom 值以及四角坐標信息,并實時更新數(shù)據,這種方式可以用于 GIS 應用開發(fā),幫助用戶更好地了解當前地圖范圍,感興趣的朋友一起看看吧
    2025-04-04
  • Vue.sync修飾符與$emit(update:xxx)詳解

    Vue.sync修飾符與$emit(update:xxx)詳解

    這篇文章主要介紹了Vue.sync修飾符與$emit(update:xxx),實現(xiàn)思路非常簡單,文章介紹了.sync修飾符的作用和使用.sync修飾符的寫法,實現(xiàn)代碼簡單易懂對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11

最新評論