index.jsx 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import React from 'react';
  2. import { Table } from '@douyinfe/semi-ui';
  3. class RowBg extends React.Component {
  4. constructor(props = {}) {
  5. super(props);
  6. this.columns = [
  7. {
  8. title: 'Name',
  9. dataIndex: 'name',
  10. width: 150,
  11. fixed: 'left',
  12. filterMultiple: false,
  13. filters: [
  14. {
  15. text: 'Code 45',
  16. value: '45',
  17. },
  18. {
  19. text: 'King 4',
  20. value: 'King 4',
  21. },
  22. ],
  23. onFilter: (value, record) => record.name.includes(value),
  24. filterDropdownProps: {
  25. showTick: true,
  26. }
  27. },
  28. {
  29. title: 'Age',
  30. dataIndex: 'age',
  31. width: 150,
  32. sorter: (a, b) => (a.age - b.age > 0 ? 1 : -1),
  33. },
  34. {
  35. title: 'Address',
  36. width: 200,
  37. dataIndex: 'address',
  38. },
  39. {
  40. title: 'Description',
  41. dataIndex: 'description',
  42. },
  43. {
  44. fixed: 'right',
  45. width: 250,
  46. render: (text, record) => (
  47. <span color="green">Info</span>
  48. ),
  49. },
  50. ];
  51. const onHeaderCell = () => {
  52. return {
  53. style: { background: 'rgba(var(--semi-grey-1), 1)' },
  54. };
  55. };
  56. this.columns.forEach((item) => (item.onHeaderCell = onHeaderCell));
  57. this.data = [];
  58. for (let i = 0; i < 46; i++) {
  59. let age = 40 + (Math.random() > 0.5 ? 1 : -1) * Math.ceil(i / 3);
  60. let name = `Edward King ${i}`;
  61. this.data.push({
  62. key: '' + i,
  63. name,
  64. age,
  65. address: `London, Park Lane no. ${i}`,
  66. description: `My name is ${name}, I am ${age} years old, living in New York No. ${i + 1} Lake Park.`,
  67. });
  68. }
  69. this.handleRow = (record, index) => {
  70. // 给偶数行设置斑马纹
  71. if (index % 2 === 0) {
  72. return {
  73. style: {
  74. background: 'var(--semi-color-fill-0)',
  75. },
  76. };
  77. } else {
  78. return {};
  79. }
  80. };
  81. this.scroll = { y: 400, x: '150%' };
  82. }
  83. render() {
  84. return <Table columns={this.columns} dataSource={this.data} onRow={this.handleRow} scroll={this.scroll} />;
  85. }
  86. }
  87. export default RowBg;