中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

泗陽(yáng)做網(wǎng)站公司競(jìng)價(jià)托管就選微競(jìng)價(jià)

泗陽(yáng)做網(wǎng)站公司,競(jìng)價(jià)托管就選微競(jìng)價(jià),編程序可以做網(wǎng)站嗎,做內(nèi)衣批發(fā)的網(wǎng)站好React Antd ProTable 如何設(shè)置類似于Excel的篩選框 目標(biāo):在web頁(yè)面的table表格中完成類似于EXCEL的Filter篩選功能。 示例圖:點(diǎn)擊標(biāo)題列上方的漏斗狀圖標(biāo),即可對(duì)數(shù)據(jù)進(jìn)行篩選。 ProTable 前景提要 ProTable API中有說(shuō)明,是有…

React Antd ProTable 如何設(shè)置類似于Excel的篩選框

目標(biāo):在web頁(yè)面的table表格中完成類似于EXCEL的Filter篩選功能。

示例圖:點(diǎn)擊標(biāo)題列上方的漏斗狀圖標(biāo),即可對(duì)數(shù)據(jù)進(jìn)行篩選。
頁(yè)面實(shí)現(xiàn)

ProTable 前景提要

ProTable API中有說(shuō)明,是有filter篩選功能的

參數(shù)說(shuō)明類型默認(rèn)值版本
filters表頭的篩選菜單項(xiàng)object[]--
onFilter本地模式下,確定篩選的運(yùn)行函數(shù)function--

個(gè)人理解:
filters 設(shè)置被篩選的數(shù)據(jù),數(shù)據(jù)形式是object
onFilter 設(shè)置篩選的函數(shù)方法就是自定義一個(gè)函數(shù)方法用于篩選

理論階段

根據(jù) 前景提要可知,設(shè)置篩選需要兩個(gè)設(shè)置。

1.數(shù)據(jù)準(zhǔn)備

  • 既然要篩選,那必須是所有數(shù)據(jù)在里面,且是去除重復(fù)后的數(shù)據(jù)。這樣子才算篩選。
    那重點(diǎn)就是數(shù)據(jù)去重存儲(chǔ)

  • 可以看到我是有多列需要篩選,那還是抽象封裝一個(gè)方法數(shù)據(jù)去重,和存儲(chǔ)的方法來(lái)調(diào)用方便低調(diào)用和維護(hù)。

2.篩選函數(shù)

  • 就是你選擇了篩選框的數(shù)據(jù),你要自定義匹配方式,成功就是true,失敗就是false。
    頁(yè)面就會(huì)顯示匹配成功的數(shù)據(jù)。

  • 也是封裝方法都用這個(gè)匹配方法即可

實(shí)踐階段

1.數(shù)據(jù)準(zhǔn)備

  1. 首先在ProTable中使用request獲取數(shù)據(jù),調(diào)用生成數(shù)據(jù)方法
 request={async (params, sorter, filter) => {const r = await queryData(current_table, { ...params, sorter, filter });//獲取的數(shù)據(jù)為r,若有數(shù)據(jù)則,生成篩選數(shù)據(jù)。if (r?.data) {generateFilterOptions(r.data, {period: 'period',end_customer: 'end_customer',customer_name: 'customer_name',});}
  1. 編寫生成數(shù)據(jù)方法generateFilterOptions
/**
3. data 原數(shù)據(jù) propertyMappings 篩選模板*/function generateFilterOptions(data: any[],propertyMappings: { [key: string]: string },handleNullForKeys?: string[],): void {const groupedOptions: { [key: string]: Option[] } = {};// 遍歷數(shù)據(jù),直接構(gòu)建分組選項(xiàng)data.forEach((item) => {Object.entries(propertyMappings).forEach(([targetKey, sourceKey]) => {let value = item[sourceKey];if (handleNullForKeys?.includes(targetKey) && value === null) value = '';if (!groupedOptions[targetKey]) {groupedOptions[targetKey] = [];}// 確保每個(gè)值只添加一次,利用 Set 去重const valueSet = new Set(groupedOptions[targetKey].map((option) => option.value));if (!valueSet.has(value)) {groupedOptions[targetKey].push({ key: targetKey, text: String(value), value });}});});// 將生成的選項(xiàng)設(shè)置到狀態(tài)中setFilterOptions(groupedOptions);}
  1. 用useState存儲(chǔ)數(shù)據(jù)
const [filterOptions, setFilterOptions] = useState<{ [key: string]: Option[] }>({});
  1. 可以看一下groupedOptions的數(shù)據(jù)格式,最后需要的就是
    {text:‘2023-01’,value:‘2023-01’} 前面的key是用于不同列分組的
    在這里插入圖片描述

2.準(zhǔn)備篩選函數(shù)

// 通用的過(guò)濾函數(shù)const genericOnFilter = (dataIndex: string) => (value: any, record: any) => {if (value !== null) {if (value === '') {return record[dataIndex] === '';}if (record[dataIndex] !== null && (typeof value === 'string' || typeof value === 'number')) {return String(record[dataIndex]).indexOf(String(value)) === 0;}} else {return record[dataIndex] === null;}return false;};

因?yàn)閚ull可能或出錯(cuò),還有空字符串不能使用indexof所以寫出這樣。
value 是篩選選中的數(shù)據(jù),record[dataIndex]是列的數(shù)據(jù).
匹配上需要顯示的數(shù)據(jù)就返回true,不需要的就返回false

3.開始使用

上面所說(shuō)的API都是ProTable 的column API

  const columns: ProColumns<UserDetails>[] = [{title: 'Period',dataIndex: 'period',filters: filterOptions['period'],onFilter: genericOnFilter('period'),},{title: 'End Customer',dataIndex: 'end_customer',filters: filterOptions['end_customer'],onFilter: genericOnFilter('end_customer'),},{title: 'Customer name',dataIndex: 'customer_name',filters: filterOptions['customer_name'],onFilter: genericOnFilter('customer_name'),},.....

結(jié)束

理論上應(yīng)該講完了,可能還有更方便快捷的方法。
有疑問(wèn)或想法可以評(píng)論區(qū)留言。

http://www.risenshineclean.com/news/29723.html

相關(guān)文章:

  • 網(wǎng)站logo用什么做百度網(wǎng)站打不開
  • 網(wǎng)站批量做httpsseo優(yōu)化實(shí)訓(xùn)報(bào)告
  • 深圳租房建設(shè)局網(wǎng)站天天外鏈官網(wǎng)
  • 淮安建設(shè)工程協(xié)會(huì)網(wǎng)站查詢站長(zhǎng)之家 seo查詢
  • 淄博網(wǎng)站制作seo優(yōu)化專員
  • 在什么網(wǎng)站可以自承包活來(lái)做搜索引擎入口
  • 廈門功夫廣告設(shè)計(jì)網(wǎng)站建設(shè)工作室網(wǎng)站優(yōu)化排名資源
  • 市總工會(huì)智慧網(wǎng)站建設(shè)總結(jié)奶茶的營(yíng)銷推廣軟文
  • 綿陽(yáng) 網(wǎng)站設(shè)計(jì)推廣引流哪個(gè)軟件最好
  • 新疆網(wǎng)站建設(shè)一條龍服務(wù)網(wǎng)絡(luò)營(yíng)銷產(chǎn)品的首選產(chǎn)品
  • 做資訊網(wǎng)站要什么手續(xù)公司怎么推廣網(wǎng)絡(luò)營(yíng)銷
  • 網(wǎng)站內(nèi)容注意事項(xiàng)福州關(guān)鍵詞排名優(yōu)化
  • 鄭州做網(wǎng)站公司msgg平臺(tái)推廣是做什么
  • 網(wǎng)絡(luò)營(yíng)銷的特點(diǎn)主要有哪些seo軟件推薦
  • 律所網(wǎng)站建設(shè)方案書怎么寫怎么找推廣渠道
  • 公眾號(hào)做淘寶客接入手機(jī)網(wǎng)站免費(fèi)私人網(wǎng)站建設(shè)
  • 幫別人做網(wǎng)站必須要開公司專門的網(wǎng)頁(yè)制作工具有
  • 查看小程序源碼百度搜索引擎優(yōu)化相關(guān)性評(píng)價(jià)
  • 精仿手表網(wǎng)站超級(jí)推薦的關(guān)鍵詞怎么優(yōu)化
  • 惠州網(wǎng)站設(shè)計(jì)哪家好天津網(wǎng)站制作系統(tǒng)
  • 如何做網(wǎng)站管理引流推廣的句子
  • 哪些網(wǎng)站可以做問(wèn)卷調(diào)查賺錢5g網(wǎng)絡(luò)優(yōu)化培訓(xùn)
  • 網(wǎng)站建設(shè)規(guī)范好的競(jìng)價(jià)托管公司
  • WordPress七牛防盜鏈如何做seo整站優(yōu)化
  • 太倉(cāng)網(wǎng)站建設(shè)網(wǎng)站推廣安陽(yáng)seo
  • 有沒有什么專業(yè)做美業(yè)的網(wǎng)站網(wǎng)絡(luò)營(yíng)銷是指
  • 北京企業(yè)網(wǎng)站開發(fā)費(fèi)用有什么平臺(tái)可以推廣信息
  • 深圳做網(wǎng)站推廣產(chǎn)品關(guān)鍵詞大全
  • 沈陽(yáng)網(wǎng)站建設(shè)公司排名南昌企業(yè)網(wǎng)站建設(shè)
  • 網(wǎng)站源碼設(shè)計(jì)搜索詞分析