index.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import React from 'react';
  2. import { Link } from 'react-router-dom';
  3. import './index.less';
  4. function getItem(props, item, onChange, force) {
  5. const { width, space, active, render } = props;
  6. return (
  7. <div
  8. onClick={() => (force || active !== item.key) && onChange && onChange(item.key)}
  9. style={{ width: width || '', marginLeft: space || '', marginRight: space || '' }}
  10. className={`tab ${active === item.key ? 'active' : ''}`}
  11. >
  12. {render ? render(item) : item.name || item.title}
  13. </div>
  14. );
  15. }
  16. function Tabs(props) {
  17. const {
  18. className = '',
  19. tabs = [],
  20. size = 'basic',
  21. type = 'line',
  22. theme = 'default',
  23. border,
  24. space,
  25. onChange,
  26. force,
  27. } = props;
  28. return (
  29. <div className={`tabs ${className} ${type} ${theme} ${size} ${border ? 'border' : ''}`}>
  30. <div className="tabs-warpper" style={{ marginLeft: space * -1 || '', marginRight: space * -1 || '' }}>
  31. {tabs.map(item => {
  32. return item.path ? <Link to={item.path}>{getItem(props, item)}</Link> : getItem(props, item, onChange, force);
  33. })}
  34. </div>
  35. </div>
  36. );
  37. }
  38. Tabs.propTypes = {};
  39. export default Tabs;