成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

antd的table進(jìn)行列篩選時(shí),更新dataSource,為什么table顯示暫無(wú)數(shù)據(jù)?

everfly / 2581人閱讀

摘要:我想當(dāng)然地認(rèn)為只要改變,那么組件就會(huì)重新渲染,但是有一種特殊情況例外在中不寫篩選條件,在調(diào)用進(jìn)行列篩選的時(shí)候,通過(guò)改變保存的狀態(tài),此時(shí)重新渲染,但是拿的不是,而是拿的中的中的,而中是沒(méi)有寫代碼的,所以返回暫無(wú)數(shù)據(jù)。

我想當(dāng)然地認(rèn)為只要dataSource改變,那么

組件就會(huì)重新渲染,
但是有一種特殊情況例外:
onFilter()中不寫篩選條件,在調(diào)用filterDropdown 進(jìn)行列篩選的時(shí)候,通過(guò)handleSearch改變/保存dataSource的狀態(tài),此時(shí)
重新渲染,但是拿的不是dataSource={xxx},而是拿的filterDropdown中的onFilter()中的dataSource,而onFilter中是沒(méi)有寫代碼的,所以返回暫無(wú)數(shù)據(jù)

PS:
解釋下我不在onFilter()中寫代碼的原因,因?yàn)槲乙褜ataSource保存到state中,所以需要setState去更改dataSource數(shù)據(jù),但是onFilter()方法是在componentDidUpdate()周期調(diào)用的,所以setState會(huì)報(bào)錯(cuò),所以我想到了在onClick中setState,但這樣console.log出來(lái),dataSource更改了,但是table顯示暫無(wú)數(shù)據(jù)。

示例代碼:

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

getColumnSearchProps = (dataIndex) => ({
    filterDropdown: ({
      setSelectedKeys, selectedKeys, confirm, clearFilters,
    }) => (
      
setSelectedKeys(e.target.value ? [e.target.value] : [])} onPressEnter={() => this.handleSearch(selectedKeys, confirm)} />
), //篩選條件,沒(méi)有寫代碼,所以沒(méi)有數(shù)據(jù)返回,所以是暫無(wú)數(shù)據(jù) onFilter: (value, record) =>{ }, }) render{ return(
) }

示例代碼地址:
https://ant.design/components/table-cn/#components-table-demo-custom-filter-panel

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

onFilter()的源碼:

 getLocalData(state?: TableState | null, filter: boolean = true): Array {
    const currentState: TableState = state || this.state;
    const { dataSource } = this.props;
    let data = dataSource || [];
    // 優(yōu)化本地排序
   //就是這行代碼,通過(guò)slice,另開(kāi)內(nèi)存來(lái)保存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()的源碼地址:
https://github.com/ant-design/ant-design/blob/d922c377cba03bef39ddb7d271fce3f67c353be9/components/table/Table.tsx

(完)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/103774.html

相關(guān)文章

  • babel在提升前端效率實(shí)踐

    摘要:配置涵蓋了目前的業(yè)務(wù)場(chǎng)景的基本需求,但是可擴(kuò)展性很低。最終決定采用的生態(tài)鏈來(lái)解決上述遇到的問(wèn)題。在指定的路徑下寫入對(duì)應(yīng)的文件。 大綱 遇到的問(wèn)題場(chǎng)景及解決方案對(duì)比 什么是babel? 解決過(guò)程 目前遺留的問(wèn)題 目前實(shí)現(xiàn)功能API 參考 遇到的問(wèn)題場(chǎng)景及解決方案對(duì)比 我們目前采用的是antd + react(umi)的框架做業(yè)務(wù)開(kāi)發(fā)。在業(yè)務(wù)開(kāi)發(fā)過(guò)程中會(huì)有較多頻繁出現(xiàn)并且相似度很高的場(chǎng)...

    huayeluoliuhen 評(píng)論0 收藏0
  • Babel 在提升前端效率實(shí)踐

    摘要:經(jīng)過(guò)一周左右的時(shí)間完成了基礎(chǔ)組件的編寫。配置涵蓋了目前的業(yè)務(wù)場(chǎng)景的基本需求,但是可擴(kuò)展性很低。最終決定采用的生態(tài)鏈來(lái)解決上述遇到的問(wèn)題。在指定的路徑下寫入對(duì)應(yīng)的文件。大綱 遇到的問(wèn)題場(chǎng)景及解決方案對(duì)比 什么是babel? 解決過(guò)程 目前遺留的問(wèn)題 目前實(shí)現(xiàn)功能API 參考 遇到的問(wèn)題場(chǎng)景及解決方案對(duì)比 我們目前采用的是antd + react(umi)的框架做業(yè)務(wù)開(kāi)發(fā)。在業(yè)務(wù)開(kāi)發(fā)過(guò)程中會(huì)...

    chanthuang 評(píng)論0 收藏0
  • 常用表頁(yè)常見(jiàn)hook封裝解析

      我們今天來(lái)講講關(guān)于ahooks 源碼,我們目標(biāo)主要有以下幾點(diǎn):  深入了解 React hooks?! ∶靼兹绾纬橄笞远x hooks,且可以構(gòu)建屬于自己的 React hooks 工具庫(kù)?! ⌒〗ㄗh:培養(yǎng)閱讀學(xué)習(xí)源碼的習(xí)慣,工具庫(kù)是一個(gè)對(duì)源碼閱讀不錯(cuò)的選擇?! ×斜眄?yè)常見(jiàn)元素  后臺(tái)管理系統(tǒng)中常見(jiàn)典型列表頁(yè)包括篩選表單項(xiàng)、Table表格、Pagination分頁(yè)這三部分?! ♂槍?duì)使用 Ant...

    3403771864 評(píng)論0 收藏0
  • 推薦學(xué)Java——數(shù)據(jù)表操作

    摘要:出現(xiàn)在分組之后,其后可以接聚合函數(shù)。和表名刪除表中數(shù)據(jù)有何區(qū)別前者是將表直接刪除,然后重新創(chuàng)建表,表中無(wú)數(shù)據(jù)。后者是一條一條刪除表中所有數(shù)據(jù)。在數(shù)據(jù)量較少的情況下,后者效率高反之,前者高。 說(shuō)明上節(jié)內(nèi)容學(xué)習(xí)了數(shù)據(jù)庫(kù) MySQL 的安裝、驗(yàn)證、數(shù)據(jù)庫(kù)管理工具、數(shù)據(jù)庫(kù)的基本操作命令,還沒(méi)有學(xué)習(xí)的同學(xué)可以從主頁(yè)去看上...

    番茄西紅柿 評(píng)論0 收藏2637
  • 從零開(kāi)始 React 組件開(kāi)發(fā)之路 (一):表格篇

    摘要:下的表格狂想曲前言歡迎大家閱讀從零開(kāi)始的組件開(kāi)發(fā)之路系列第一篇,表格篇。北京小李中的每一個(gè)元素是一列的配置,也是一個(gè)對(duì)象,至少應(yīng)該包括如下幾部分表頭該列使用行中的哪個(gè)進(jìn)行顯示易用性與通用性的平衡易用性與通用性互相制衡,但并不是絕對(duì)矛盾。 React 下的表格狂想曲 0. 前言 歡迎大家閱讀「從零開(kāi)始的 React 組件開(kāi)發(fā)之路」系列第一篇,表格篇。本系列的特色是從 需求分析、API 設(shè)...

    DesGemini 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看

    <