antd的table進行列篩選時,更新dataSource,為什么table顯示暫無數據?

我想當然地認為只要dataSource改變,那么<Table>組件就會重新渲染,
但是有一種特殊情況例外:
onFilter()中不寫篩選條件,在調用filterDropdown進行列篩選的時候,通過handleSearch改變/保存dataSource的狀態,此時<Table>重新渲染,但是拿的不是dataSource={xxx},而是拿的filterDropdown中的onFilter()中的dataSource,而onFilter中是沒有寫代碼的,所以返回暫無數據

PS:
解釋下我不在onFilter()中寫代碼的原因,因為我已將dataSource保存到state中,所以需要setState去更改dataSource數據,但是onFilter()方法是在componentDidUpdate()周期調用的,所以setState會報錯,所以我想到了在onClick中setState,但這樣console.log出來,dataSource更改了,但是table顯示暫無數據。

示例代碼:

handleSearch=()=>{
??this.setState({dataSource:dataSourceB})
}

getColumnSearchProps?=?(dataIndex)?=>
?({
????filterDropdown:?({
??????setSelectedKeys,?selectedKeys,?confirm,?clearFilters,
????})?=>?(
??????<div>
????????<Input
??????????value={selectedKeys[0]}
??????????onChange={e?=>?setSelectedKeys(e.target.value???[e.target.value]?:?[])}
??????????onPressEnter={()?=>?this.handleSearch(selectedKeys,?confirm)}
????????/>
????????<Button
??????????onClick={()?=>?this.handleSearch(selectedKeys,?confirm)}
????????>
??????????Search
????????</Button>
??????</div>
????),
????//篩選條件,沒有寫代碼,所以沒有數據返回,所以是暫無數據
????onFilter:?(value,?record)?=>{??},
??})

render{
??return(
????<Table
??????column={?[{...this.getColumnSearchProps('name')}}
??????dataSource={dataSourceA}
????>
??)?

}
復制代碼

示例代碼地址:
ant.design/components/…

列篩選邏輯的流程圖如下:

onFilter()的源碼:

?getLocalData(state?:?TableState<T>?|?null,?filter:?boolean?=?true):?Array<T>?{
????const?currentState:?TableState<T>?=?state?||?this.state;
????const?{?dataSource?}?=?this.props;
????let?data?=?dataSource?||?[];
????//?優化本地排序
???//就是這行代碼,通過slice,另開內存來保存dataSource
????data?=?data.slice(0);
????const?sorterFn?=?this.getSorterFn(currentState);
????if?(sorterFn)?{
??????data?=?this.recursiveSort(data,?sorterFn);
????}
????//?篩選
????if?(filter?&&?currentState.filters)?{
??????Object.keys(currentState.filters).forEach(columnKey?=>?{
????????const?col?=?this.findColumn(columnKey)?as?any;
????????if?(!col)?{
??????????return;
????????}
????????const?values?=?currentState.filters[columnKey]?||?[];
????????if?(values.length?===?0)?{
??????????return;
????????}
????????const?onFilter?=?col.onFilter;
????????data?=?onFilter
????????????data.filter(record?=>?{
??????????????return?values.some(v?=>?onFilter(v,?record));
????????????})
??????????:?data;
??????});
????}
????return?data;
??}
復制代碼

onFilter()的源碼地址:
github.com/ant-design/…


(完)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275299.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275299.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275299.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

重新構想原子化 CSS

感謝印記中文的 QC-L[1] 對本文進行翻譯&#xff0c;英文原文: English Version[2]。本文會比往期文章相對長些。這是我個人的一個重大的工具發布&#xff0c;有許多內容我想談論。如果你能花些時間讀完&#xff0c;不勝感激&#xff0c;希望能對你有所幫助 :)推薦訪問 https:/…

cv::mat 顏色空間_網站設計基礎:負空間

cv::mat 顏色空間Let’s start off by answering this question: What is negative space? It is the “empty” space between and around the subjects of an image. In the context of web design, your “subjects” are the pictures, videos, text, buttons and other e…

MVC3 上傳文件

前臺引擎采用Razor 上傳頁View&#xff1a; model System.Web.HttpContextBase{ ViewBag.Title "上傳文件";}<h2>上傳文件</h2><br /><br />*new { enctype "multipart/form-data" }比不可少&#xff0c;否則上傳文件不會成功…

Day07 - Ruby比一比:Symbol符號與String字串

前情提要&#xff1a; 第六天我們透過Ruby代碼練習public&#xff0c;protected和privatemethod時&#xff0c;發現冒號在前面的參數&#xff0c;&#xff1a;mydraft&#xff0c;&#xff1a;myspace&#xff0c;這些就是符號Symbol。在今天&#xff0c;我們就來解釋Symbol吧&…

[知乎回答] 前端是否要學習 Node.js?

大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以加我微信 ruochuan12很多小伙伴都表示收獲頗豐。一起學的大多數200行左右的Node.js源碼。今天推薦這篇文章。&#xff08;剛剛在寫明天掘金要發的文章&#xff0c;差點忘記今天還沒發文。在知乎上看…

shields 徽標_我的徽標素描過程

shields 徽標Sketching is arguably the most important part of my process when it comes to logo design. In the beginning of my design career, I would actually skip this step completely and go right to the computer. I’d find myself getting stuck and then goi…

VC編程心得

VC編程心得 開始&#xff1a; 聲明變量要初始化&#xff1b; 指針變量申請空間后是不是為空&#xff08;申請不成功&#xff09;&#xff1b; 過程&#xff1a; CREATE、OPEN了的東西賦給指針變量&#xff0c;要看指針變量是否為空&#xff1b; 指針變量在調用其方法之前&#…

叮咚,系統檢測到 npm 有更新,原理揭秘!

大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以加我微信 ruochuan12本文來自V同學投稿的源碼共讀第六期筆記&#xff0c;寫得很有趣。現在已經進行到第十期了。你或許經常看見 npm 更新的提示。npm 更新提示面試官可能也會問你&#xff0c;組件庫…

ui設計未來十年前景_UI設計的10條誡命

ui設計未來十年前景重點 (Top highlight)The year is approximately 1,300 BC when Moses received the 10 UI design commandments from the almighty design gods. The list was comprised of best practices that only the most enlightened designers would be aware of.當…

w3ctech 2011 北京站(組圖)

門前的牌子大廳一推低價技術書籍會場嘉賓席人漸漸到齊準備工作w3c中國區負責人 安琪 第一個演講焦峰同學分享了瀏覽器兼容性的相關問題石川同學分享的是JQuery的相關內容攝影哥微博大屏幕&#xff0c;有亮點哦。。。MBP啊有木有&#xff5e;&#xff5e;&#xff5e;貘大現場提…

Linux設備驅動之IIO子系統——IIO框架及IIO數據結構

Linux設備驅動之IIO子系統——IIO框架及IIO數據結構由于需要對ADC進行驅動設計&#xff0c;因此學習了一下Linux驅動的IIO子系統。本文翻譯自《Linux Device Drivers Development 》--John Madieu&#xff0c;本人水平有限&#xff0c;若有錯誤請大家指出。 IIO Framework 工業…

瀏覽器中的 ESM

大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以加我微信 ruochuan12早期的web應用非常簡單&#xff0c;可以直接加載js的形式去實現。隨著需求的越來越多&#xff0c;應用越做越大&#xff0c;需要模塊化去管理項目中的js、css、圖片等資源。這里…

理解面向連接和無連接協議之間的區別

理解面向連接和無連接協議之間的區別 網絡編程中最基本的概念就是面向連接&#xff08;connection-oriented&#xff09;和無連接&#xff08;connectionless&#xff09;協議。 面向連接和無連接指的都是協議。也就是說&#xff0c;這些術語指的并不是無理介質本身&#xff0c…

標記圖標_標記您的圖標

標記圖標Not labeling your icons is the same as assuming that we are all fluent in ancient hieroglyphics. Are you? Can you just walk up to Cleopatras needle and read it like you could read a childrens book? Even emojis, our modern hieroglyphics dont mean …

找出無序數組中最小的k個數(top k問題)

2019獨角獸企業重金招聘Python工程師標準>>> 給定一個無序的整型數組arr&#xff0c;找到其中最小的k個數 該題是互聯網面試中十分高頻的一道題&#xff0c;如果用普通的排序算法&#xff0c;排序之后自然可以得到最小的k個數&#xff0c;但時間復雜度高達O(NlogN)&…

你應該知道的 Node 基礎知識

大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以加我微信 ruochuan12 參與&#xff0c;已進行兩個多月&#xff0c;大家一起交流學習&#xff0c;共同進步。源碼共讀學的多數是 Node.js &#xff0c;今天分享一篇 Node.js 基礎知識的文章。一. N…

C# 中數據緩存總結

在C#嘗試了5種方法進行數據緩存&#xff0c;具體如下&#xff1a;(如有遺漏&#xff0c;錯誤歡迎大家指正&#xff0c;歡迎提建議。)1&#xff1a;Session方法&#xff1a;此方法是針對于每個用戶來的&#xff0c;如果用戶量比較大&#xff0c;那么建議不要采用此方法&#xff…

react 引入 mobx @babel/core: 7.2.2

為什么80%的碼農都做不了架構師&#xff1f;>>> yarn add babel/plugin-proposal-class-propertiesyarn add babel/plugin-proposal-decorators"babel": {"plugins": [["babel/plugin-proposal-decorators", {"legacy": …

面試官問:怎么自動檢測你使用的組件庫有更新

大家好&#xff0c;我是若川。最近組織了源碼共讀活動&#xff0c;感興趣的可以加我微信 ruochuan12本文來自V同學投稿的源碼共讀第六期筆記&#xff0c;寫得很有趣。現在已經進行到第十期了。你或許經常看見 npm 更新的提示。npm 更新提示面試官可能也會問你&#xff0c;組件庫…

設計模式完整備忘錄

小言&#xff1a;這不是設計模式講解型博文&#xff0c;以下將設計模式的概述、類圖&#xff0c;代碼示例&#xff0c;總結分每篇博文單獨展示&#xff0c;現將其歸類&#xff0c;便于以后翻閱&#xff0c;設計模式也不是一兩個月學完了就能完全領悟&#xff0c;它只告訴我們幾…