index.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { Divider } from 'antd';
  2. import { useMemo, useState } from 'react';
  3. import styles from './index.less';
  4. const TabsContent = (props) => {
  5. const {
  6. defaultActiveKey = '1',
  7. center = false,
  8. small = false,
  9. items = {},
  10. onChange,
  11. } = props;
  12. const [active, setActive] = useState(defaultActiveKey);
  13. const renderContent = useMemo(() => {
  14. return items.find((item) => item.key == active)?.children;
  15. }, [active, items]);
  16. return (
  17. <div>
  18. <div
  19. className={`${styles.tabsTitle} ${small ? styles.small : ''}`}
  20. style={center ? { justifyContent: 'center' } : {}}
  21. >
  22. {items.map((item, index) => (
  23. <>
  24. <div
  25. key={item.key}
  26. className={`${styles.tabsItem} ${
  27. active == item.key ? styles.active : ''
  28. }`}
  29. onClick={() => {
  30. setActive(item.key);
  31. onChange(item.key);
  32. }}
  33. >
  34. {item.label}
  35. </div>
  36. {index !== items.length - 1 && (
  37. <Divider
  38. type="vertical"
  39. style={{
  40. height: '0.5rem',
  41. width: '1.5px',
  42. backgroundColor: '#BCBABA',
  43. }}
  44. />
  45. )}
  46. </>
  47. ))}
  48. </div>
  49. <div>{renderContent}</div>
  50. </div>
  51. );
  52. };
  53. export default TabsContent;