ToggleButton.tsx 761 B

123456789101112131415161718192021222324252627282930313233
  1. import React, { PureComponent } from 'react';
  2. interface ToggleButtonProps {
  3. onChange?: (value) => void;
  4. selected?: boolean;
  5. value: any;
  6. classNames?: string;
  7. }
  8. interface ToggleButtonState {}
  9. export default class ToggleButton extends PureComponent<ToggleButtonProps, ToggleButtonState> {
  10. static defaultProps = {
  11. classNames: '',
  12. };
  13. handleChange = () => {
  14. const { onChange, value } = this.props;
  15. if (onChange) {
  16. onChange(value);
  17. }
  18. };
  19. render() {
  20. const { children, selected, classNames } = this.props;
  21. const btnClassName = `btn ${classNames} ${selected ? 'active' : ''}`;
  22. return (
  23. <button className={btnClassName} onClick={this.handleChange}>
  24. <span>{children}</span>
  25. </button>
  26. );
  27. }
  28. }