2.1 增加只在列表中显示的数据列定义

以最高学位举例,我们把他定义为只在详细页显示

  1. const columns: ProColumns<TYPE.Member>[] = [
  2. ...
  3. {
  4. title: '最高学位',
  5. dataIndex: 'degree',
  6. //下面这个属性是起决定作用的
  7. hideInTable: true,
  8. valueEnum: {
  9. 0: ' ',
  10. 1: '学士学位',
  11. 2: '硕士学位',
  12. 3: '博士学位',
  13. },
  14. },

2.2 用变量控制是否显示数据详细页

定义两个新的useState变量,分别对应是否显示详细页以及当前数据值。

  1. const [showDetail, setShowDetail] = useState<boolean>(false);
  2. const [currentRow, setCurrentRow] = useState<TYPE.Member>();

通过列定义的render属性,把姓名变成可以点击的链接,点击后设置当前数据值并允许显示详细页

  1. render: (dom, record) => {
  2. return (
  3. <a
  4. onClick={() => {
  5. setCurrentRow(record);
  6. setShowDetail(true);
  7. }}
  8. >
  9. {dom}
  10. </a>
  11. );
  12. },

2.3 实现一个简单的数据详细页

新的引用

  1. import { Drawer } from 'antd';
  2. import type { ProDescriptionsItemProps } from '@ant-design/pro-descriptions';
  3. import ProDescriptions from '@ant-design/pro-descriptions';

PageContainer里ProTable后面增加一个显示详细数据的滑动组件

  1. <Drawer
  2. width={600}
  3. visible={showDetail}
  4. onClose={() => {
  5. setCurrentRow(undefined);
  6. setShowDetail(false);
  7. }}
  8. closable={false}
  9. >
  10. {currentRow?.id && (
  11. <ProDescriptions<TYPE.Member>
  12. column={2}
  13. title={currentRow?.realName}
  14. request={async () => ({
  15. data: currentRow || {},
  16. })}
  17. params={{
  18. id: currentRow?.id,
  19. }}
  20. columns={columns as ProDescriptionsItemProps<TYPE.Member>[]}
  21. />
  22. )}
  23. </Drawer>

image.png

版权说明:本文由北京朗思云网科技股份有限公司原创,向互联网开放全部内容但保留所有权力。