element-plus 官方表格排序問題小結(jié)
更新時間:2024年10月16日 12:11:07 作者:前端小芬芬
在使用Element Plus官方API時,表格默認排序可能會遇到問題,一個列表可能被多次排序影響數(shù)據(jù)展示,解決方法是修改useSortTable.js文件,這樣可以確保表格按預(yù)期正確排序,更多詳情可查閱相關(guān)的技術(shù)文檔或資源
element-plus 官方API 默認表格排序存在問題,一個list 被多組排序

修改后:


<template>
<el-table
:data="stateTable.table.data"
@sort-change="(data) => handleSort(data, stateTable)"
>
</el-table>
<template>
<script setup>
import { reactive } from "vue";
import { copyTableData, handleSort } from "@/hooks/useSortTable.js";
let stateTable = reactive({
table: {
border: true,
currentPage: 1,
pageSize: 10,
// 接口返回數(shù)據(jù)
data: [],
// 表頭數(shù)據(jù)
columns: [],
},
});
const getTableData = async (data) => {
copyTableData.value = [...stateTable.table.data]
};
getTableData()
</script>useSortTable.js
import { ref } from "vue";
export const copyTableData = ref([]);
export const sortByFieldDesc = (arr, field, order) => {
arr.sort((a, b) => {
const aValue = a?.[field];
const bValue = b?.[field];
let numA =
typeof aValue === "string" && !isNaN(Number(aValue))
? Number(aValue)
: aValue;
let numB =
typeof bValue === "string" && !isNaN(Number(bValue))
? Number(bValue)
: bValue;
if (
typeof numA === "string" &&
typeof numB === "string" &&
!isNaN(Date.parse(numA)) &&
!isNaN(Date.parse(numB))
) {
// 如果是日期類型的字符串,則按照日期排序
const dateA = new Date(numA);
const dateB = new Date(numB);
if (order === "descending") {
return dateB - dateA;
} else {
return dateA - dateB;
}
} else {
// 非日期類型,按照數(shù)字或其他類型的邏輯排序
if (order === "descending") {
return numB - numA;
} else {
return numA - numB;
}
}
});
return arr;
};
// 修改handleSort函數(shù),使其接受stateTable作為參數(shù)
export const handleSort = (data, stateTable) => {
const { prop, order } = data;
let reserveData = copyTableData.value.filter(
(item) =>
item?.[prop] !== undefined &&
item?.[prop] !== null &&
item?.[prop] !== "-"
);
let filterData = copyTableData.value.filter(
(item) =>
item?.[prop] === undefined ||
item?.[prop] === null ||
item?.[prop] === "-"
);
if (order !== null) {
sortByFieldDesc(reserveData, prop, order);
stateTable.table.data = reserveData.concat(filterData);
} else {
stateTable.table.data = [...copyTableData.value];
}
};到此這篇關(guān)于element-plus 官方表格排序問題的文章就介紹到這了,更多相關(guān)element-plus 官方表格排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js中的document.querySelector()方法舉例詳解
這篇文章主要給大家介紹了關(guān)于js中document.querySelector()方法的相關(guān)資料,document.querySelector是JavaScript中的一個內(nèi)置方法,用于通過CSS選擇器選擇文檔中的第一個匹配元素,需要的朋友可以參考下2024-01-01
使用JavaScriptCore實現(xiàn)OC和JS交互詳解
JavaScriptCore是webkit的一個重要組成部分,主要是對JS進行解析和提供執(zhí)行環(huán)境。下面這篇文章主要給大家介紹了使用JavaScriptCore實現(xiàn)OC和JS交互的相關(guān)資料,文中介紹的非常詳細,需要的朋友可以參考學習,下面來一起看看吧。2017-03-03
JavaScript必知必會(九)function 說起 閉包問題
這篇文章主要介紹了JavaScript必知必會(九)function 說起 閉包問題的相關(guān)資料,需要的朋友可以參考下2016-06-06
ES6新增數(shù)據(jù)結(jié)構(gòu)WeakSet的用法詳解
WeakSet和Set類似,同樣是元素不重復(fù)的集合,它們的區(qū)別是WeakSet內(nèi)的元素必須是對象,不能是其它類型。接下來通過本文給大家詳細介紹ES6新增數(shù)據(jù)結(jié)構(gòu)WeakSet的用法,感興趣的朋友一起看看吧2017-08-08

