el-table實現(xiàn)給每行添加loading效果案例
前言
如圖所示,在el-table表格中,使用el-switch組件,想讓每個組件在開關(guān)的時候都有一個loading效果,也可以是el-button,原理都是類似,下面直接給方案。

錯誤分析
錯誤代碼如下,可以看見,我給switchLoading應(yīng)用到每一個el-switch組件上了,所以每次都是全部組件loading,只要我們給它單獨出來就可以搞定。
<el-table-column prop="enable" label="是否啟用" width="80" align="center">
<template #default="{ row }">
<el-switch
v-model="row.enable"
active-text="正常"
inactive-text="停用"
inline-prompt
:loading="switchLoading"
style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"
@change="changeHandle(row)"
/>
</template>
</el-table-column>
//ts
const changeHandle = (row) => {
switchLoading.value = true
changeEnable(row.id)
.then((resp) => {
ElMessage.success('操作成功!')
})
.catch((error) => {
console.log(error)
})
.finally(() => {
switchLoading.value = false
})
}
解決方法
方案一
讓每一個switch組件都有自己的loading,那直接在row的屬性上加一個loading屬性即可,這樣最方便,也不用我們聲明變量。
// template
<el-table-column prop="enable" label="是否啟用" width="80" align="center">
<template #default="{ row }">
<el-switch
v-model="row.enable"
active-text="正常"
inactive-text="停用"
inline-prompt
:loading="row.loading" // 改動位置
style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"
@change="changeHandle(row)"
/>
</template>
</el-table-column>
//ts
const changeHandle = (row) => {
row.loading = true // 改動位置
changeEnable(row.id)
.then((resp) => {
ElMessage.success('操作成功!')
})
.catch((error) => {
console.log(error)
})
.finally(() => {
row.loading = false // 改動位置
})
}
方案二
給loading屬性加一個判斷switchLoading == row.id,只有在id相等的時候才進(jìn)行l(wèi)oading效果,這樣需要我們聲明一個const switchLoading = ref('') 變量來存儲當(dāng)前的id,也可以解決!
// template
<el-table-column prop="enable" label="是否啟用" width="80" align="center">
<template #default="{ row }">
<el-switch
v-model="row.enable"
active-text="正常"
inactive-text="停用"
inline-prompt
:loading="switchLoading == row.id" // 改動位置
style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"
@change="changeHandle(row)"
/>
</template>
</el-table-column>
// ts
const changeHandle = (row) => {
switchLoading.value = row.id // 改動位置
changeEnable(row.id)
.then((resp) => {
ElMessage.success('操作成功!')
})
.catch((error) => {
console.log(error)
})
.finally(() => {
switchLoading.value = '' // 改動位置
})
}
最終效果
以上2種方案都可以解決,效果如下,你喜歡哪種解決方案呢?
我選擇第一種同理,在table中的按鈕、下拉搜索等,也是一樣的解決方法。

總結(jié)
這些僅為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue ECharts直角坐標(biāo)系配置詳細(xì)講解
數(shù)據(jù)的重要性我們大家都知道,就算再小的項目中都可能使用幾個圖表展示,我最近在做項目的過程中也是需要用到圖表,最后選擇了echarts圖表庫2022-12-12
vue監(jiān)聽頁面滾動到某個高度觸發(fā)事件流程
這篇文章主要介紹了vue監(jiān)聽頁面滾動到某個高度觸發(fā)事件流程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04
vue3+ts實現(xiàn)一個表單組件的詳細(xì)代碼
這篇文章主要介紹了vue3+ts實現(xiàn)一個表單組件的詳細(xì)代碼,確保通過axios調(diào)用后端接口來獲取省市區(qū)和街道數(shù)據(jù),并在選擇省市區(qū)時加載相應(yīng)的街道數(shù)據(jù),需要的朋友可以參考下2024-07-07
vue-meta實現(xiàn)router動態(tài)設(shè)置meta標(biāo)簽的方法
這篇文章主要介紹了vue-meta實現(xiàn)router動態(tài)設(shè)置meta標(biāo)簽,實現(xiàn)思路非常簡單內(nèi)容包括mata標(biāo)簽的特點和mata標(biāo)簽共有兩個屬性,分別是http-equiv屬性和name屬性,本文通過實例代碼給大家詳細(xì)講解需要的朋友可以參考下2022-11-11
vite中的glob-import批量導(dǎo)入的實現(xiàn)
本文主要介紹了vite中的glob-import批量導(dǎo)入的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
仿ElementUI實現(xiàn)一個Form表單的實現(xiàn)代碼
這篇文章主要介紹了仿ElementUI實現(xiàn)一個Form表單的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
vue實現(xiàn)todolist基本功能以及數(shù)據(jù)存儲功能實例詳解
本文通過實例代碼給大家介紹了vue實現(xiàn)todolist基本功能以及數(shù)據(jù)存儲功能,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04
vue中獲取滾動table的可視頁面寬度調(diào)整表頭與列對齊(每列寬度不都相同)
這篇文章主要介紹了vue中獲取滾動table的可視頁面寬度,調(diào)整表頭與列對齊(每列寬度不都相同),需要的朋友可以參考下2019-08-08

