記錄 Hooks Table 增刪子表

記錄Antd Table組件寫法父表Row增加、刪除或其他操作子表單獨(dú)刷新

平常我們的做表格都有展開子表,那么我們要在父元素操作子元素比如刪除、增加和刷新,這種情況我們需要做如下寫法:

image.png
import { Table, Row, Space, Button, Spin } from "antd";
import Mock from "mockjs";
import { useState, memo, useEffect } from "react";

//子元素
const RefreshChildRow = memo((props) => {
  const { id, refreshId, resetRefresh } = props;
  const [loading, setLoading] = useState(false);

  useEffect(() => {
    if (refreshId === id) {
      setLoading(true);
      setTimeout(() => {
        setLoading(false);
        resetRefresh(null);
      }, 1000);
    }
  }, [refreshId, id, resetRefresh]);

  return (
    <Spin spinning={loading}>
      <Row>{props.name}</Row>
    </Spin>
  );
});

const Random = Mock.Random;

const data = new Array(10).fill("").map(() => ({
  name: Random.name(),
  id: Mock.mock("@increment"),
  title: Random.title(),
  child: [
    {
      name: Random.name(),
      id: Mock.mock("@increment"),
      title: Random.title()
    }
  ]
}));

const CustomTable = (props) => {
  const [refreshId, setRefreshId] = useState(null);
  const handleAdd = (row) => {
    setRefreshId(row.id);
  };
  const columns = [
    {
      dataIndex: "name",
      title: "name"
    },
    {
      dataIndex: "id",
      title: "id"
    },
    {
      dataIndex: "title",
      title: "title"
    },
    {
      title: "操作",
      render(row) {
        return (
          <Space>
            <Button onClick={() => handleAdd(row)}>添加</Button>
          </Space>
        );
      }
    }
  ];
  return (
    <Table
      columns={columns}
      rowKey={"id"}
      pagination={false}
      size="small"
      dataSource={data}
      expandable={{
        expandedRowRender: (record) => (
          <RefreshChildRow
            {...record}
            refreshId={refreshId}
            resetRefresh={setRefreshId}
          />
        )
      }}
    />
  );
};

export default memo(CustomTable);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 使用antd自帶的table組件時(shí),遇到了控制臺報(bào)錯(cuò),雖然是warning不影響使用,但紅紅的一塊看起來總覺得不舒...
    _____請輸入昵稱閱讀 10,917評論 0 6
  • ======================console報(bào)錯(cuò)Objects are not valid as a...
    nnnnxcj閱讀 388評論 1 0
  • 1、v-model默認(rèn)的觸發(fā)條件是input事件,加了.lazy修飾符之后,v-model會在change事件觸發(fā)...
    Dockerps閱讀 391評論 0 2
  • 技術(shù)點(diǎn): 不定期更新補(bǔ)充 頁面引用svg symbol標(biāo)簽創(chuàng)建icon p:nth-child(2) 與 p:nt...
    wwmin_閱讀 1,594評論 0 52
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂有人憂愁,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,898評論 28 54

友情鏈接更多精彩內(nèi)容