index.js 973 B

1234567891011121314151617181920212223242526272829303132333435
  1. import { useMemo, useState } from 'react';
  2. import styles from './index.less';
  3. const TabsContent = (props) => {
  4. const { defaultActiveKey = '1', center = true, items = {}, onChange } = props;
  5. const [active, setActive] = useState(defaultActiveKey);
  6. const renderContent = useMemo(() => {
  7. return items.find((item) => item.key == active).children;
  8. }, [active, items]);
  9. return (
  10. <div>
  11. <div
  12. className={styles.tabsTitle}
  13. style={center ? { justifyContent: 'center' } : {}}
  14. >
  15. {items.map((item) => (
  16. <div
  17. key={item.key}
  18. className={`${styles.tabsItem} ${
  19. active == item.key ? styles.active : ''
  20. }`}
  21. onClick={() => {
  22. setActive(item.key);
  23. onChange(item.key);
  24. }}
  25. >
  26. {item.label}
  27. </div>
  28. ))}
  29. </div>
  30. <div>{renderContent}</div>
  31. </div>
  32. );
  33. };
  34. export default TabsContent;