Antd中Table列表行默認(rèn)包含修改及刪除功能的封裝方法
一、前言
ant-design是非常不錯(cuò)、方便的一款前端組件庫(kù),而這次用到的ProComponents則是在 Ant Design 上進(jìn)行了自己的封裝,更加易用,與 Ant Design 設(shè)計(jì)體系一脈相承,無縫對(duì)接 antd 項(xiàng)目,樣式風(fēng)格與 antd 一脈相承,無需魔改,渾然天成。一些預(yù)設(shè)行為也達(dá)到了更少的代碼,更少的 Bug的目的。
這里我使用ProComponents的editable-table時(shí)發(fā)現(xiàn)它的表格默認(rèn)自帶了修改刪除功能:

代碼封裝的actionRender方法提供了相應(yīng)的參數(shù)來使用默認(rèn)的修改刪除:

自己使用的項(xiàng)目也有非常多的表單,大部分都包含修改刪除功能,所以對(duì)我來講也是非常實(shí)用的,但它的修改是在行內(nèi)編輯,我的需要彈窗編輯,所以這里根據(jù)自己的思路封裝了一下,下面分享給大家。
二、給Table封裝默認(rèn)的修改、刪除功能
整個(gè)封裝過程把思路理清楚了也能很簡(jiǎn)單的實(shí)現(xiàn),首先是將彈窗方法(不同功能的表單會(huì)有差異)傳遞給封裝的公共Table:
//彈窗方法
const showModal = (type: string, values: any = {}) => {
values['formType'] = type;
setFormData(values);
setFormVisible(true);
};傳遞給table:
<LimTable
actionRef={ref}
columns={columns}
func={UserView}
showModal={showModal}
headerTitle="用戶列表"
/>然后在公共Table組件中定義默認(rèn)表單的操作方法(修改,刪除)這里只提供思路,代碼不適用于你的項(xiàng)目:
//默認(rèn)的表單操作dom
const defaultColumnDom = {
update: (record: any) => (
<a key="update" onClick={() => showModal(PATCH, record)}>
修改
</a>
),
delete: (record: any) => (
<a
key="delete"
onClick={() => {
deleteDataFunc(func, record.id);
}}
>
刪除
</a>
),
};然后放入設(shè)置表單操作欄的方法中:
//設(shè)置表單options(操作欄)的方法
const setDefualtColumnsOptions = () => {
for (let i = 0; i < columns.length; i++) {
if (columns[i].dataIndex === 'option') {
if (!optionRender) {
//沒有配置optionRender則默認(rèn)增加修改、刪除功能
columns[i].render = (_: any, record: any) => [
defaultColumnDom.update(record),
defaultColumnDom.delete(record),
];
} else {
columns[i].render = (_: any, record: any) =>
optionRender({ update: defaultColumnDom.update(record), delete: defaultColumnDom.delete(record) }, record);
}
break;
}
}
};最后加入useEffect中即可完成:
useEffect(() => {
setDefualtColumnsOptions();
}, []);三、實(shí)現(xiàn)效果
當(dāng)我們不傳遞optionRender時(shí),列表默認(rèn)攜帶修改、和刪除功能:

當(dāng)我們傳遞了optionRender時(shí),列表根據(jù)傳遞的渲染操作欄:
只包含修改功能
<LimTable
actionRef={ref}
columns={columns}
func={UserView}
optionRender={(dom: any) => [dom.update]}
showModal={showModal}
headerTitle="用戶列表"
/>
包含修改功能并附加文字:
<LimTable
actionRef={ref}
columns={columns}
func={UserView}
optionRender={(dom: any) => [dom.update, '曲鳥']}
showModal={showModal}
headerTitle="用戶列表"
/>
這樣我們又封裝好了一個(gè)組件了,減少了后面編碼的重復(fù)性工作,也間接減少了BUG的產(chǎn)生。
到此這篇關(guān)于Antd中Table列表行默認(rèn)包含修改及刪除功能的封裝的文章就介紹到這了,更多相關(guān)Antd中Table列表行封裝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- antd?3.x?Table組件如何快速實(shí)現(xiàn)虛擬列表詳析
- antd?table長(zhǎng)表格出現(xiàn)滾動(dòng)條的操作方法
- antd?vue?table表格內(nèi)容如何格式化
- antdesign-vue結(jié)合sortablejs實(shí)現(xiàn)兩個(gè)table相互拖拽排序功能
- Antd-vue Table組件添加Click事件,實(shí)現(xiàn)點(diǎn)擊某行數(shù)據(jù)教程
- antd design table更改某行數(shù)據(jù)的樣式操作
- antd vue table跨行合并單元格,并且自定義內(nèi)容實(shí)例
相關(guān)文章
通過JavaScript使Div居中并隨網(wǎng)頁大小改變而改變
自己的頁面太難看了,要居中沒居中,要顏色沒顏色,但是無論是怎么樣都得使登錄的框居中吧,下面與大家分享下通過JavaScript可以簡(jiǎn)單的使Div在頁面上居中,隨著網(wǎng)頁大小的改變做出相應(yīng)的改變2013-06-06
js css+html實(shí)現(xiàn)簡(jiǎn)單的日歷
這篇文章主要為大家詳細(xì)介紹了由html、css、javascript結(jié)合實(shí)現(xiàn)的簡(jiǎn)單日歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07
js實(shí)現(xiàn)簡(jiǎn)單排列組合的方法
這篇文章主要介紹了js實(shí)現(xiàn)簡(jiǎn)單排列組合的方法,可實(shí)現(xiàn)數(shù)學(xué)上排列組合算法功能,涉及JavaScript數(shù)組與字符串操作技巧,需要的朋友可以參考下2016-01-01
JavaScript數(shù)組實(shí)現(xiàn)扁平化四種方法詳解
扁平化,顧名思義就是減少?gòu)?fù)雜性裝飾,使其事物本身更簡(jiǎn)潔、簡(jiǎn)單,突出主題。數(shù)組扁平化,對(duì)著上面意思套也知道了,就是將一個(gè)復(fù)雜的嵌套多層的數(shù)組,一層一層的轉(zhuǎn)化為層級(jí)較少或者只有一層的數(shù)組2022-10-10

