【AntDesign table】表格擴展-可選擇表格,隱藏個別checkbox

需求:表格中的checkbox有三種狀態:隱藏、禁用、可選。

原本是希望AntDesign中存在相應的option來配置隱藏checkbox,但沒找到。只有在rowSelection裏通過設置getCheckboxProps的相關屬性配置。

既然無法直接在渲染列表時就決定隱藏和顯示,

那就換個思路:等列表渲染完成後,再去隱藏checkbox。

問題:如何找到列表中需要隱藏的checkbox呢?

我的思路就是:

通過getCheckboxProps給需要隱藏的checkbox加個隱藏標誌,然後列表渲染完後,通過操作dom,給相應的元素加個樣式隱藏掉。

相關實現:

1、給要隱藏的checkbox,設置它的name爲‘disabled’

private getCheckboxProps(record: any) {
    return {
      props: {
        name: !record.isAuthority ? 'disabled' : '',
        disabled: record.isDisabled || !record.isAuthority
      }
    }
  }

2、然後再操作dom,給它個隱藏樣式

private hiddenCheckbox() {
    const displayCheckboxList = document.getElementsByName('disabled')
    displayCheckboxList.forEach((item: any) => {
      item.parentNode.parentNode.parentNode.className = item.className + ' hidden'
    })
  }

你會發現,怎麼這麼搞笑,要去往上找3層父級呢。

是因爲,如果只是隱藏了這個初始狀態的checkbox,當你點擊全選的時候,這個checkbox是會再次出現的,並且是勾選狀態的。

(因爲點擊全選,antDesign會重新賦值類名,如果hidden加在這層就會被覆蓋掉了)

所以我就直接往上,把父級給隱藏掉。

但其實這個都是蠢辦法,講道理可以更快捷的,就是:

     在getCheckboxProps裏把它給禁用掉再隱藏,那你頁面中的任何操作都不會算進這個checkbox了。

這個實現也還挺簡單的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章