动态菜单和动态路由的 antd pro

index.js 1.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import React, { PureComponent } from 'react';
  2. import { Input, Icon } from 'antd';
  3. import styles from './index.less';
  4. export default class EditableItem extends PureComponent {
  5. state = {
  6. value: this.props.value,
  7. editable: false,
  8. };
  9. handleChange = e => {
  10. const { value } = e.target;
  11. this.setState({ value });
  12. };
  13. check = () => {
  14. this.setState({ editable: false });
  15. if (this.props.onChange) {
  16. this.props.onChange(this.state.value);
  17. }
  18. };
  19. edit = () => {
  20. this.setState({ editable: true });
  21. };
  22. render() {
  23. const { value, editable } = this.state;
  24. return (
  25. <div className={styles.editableItem}>
  26. {editable ? (
  27. <div className={styles.wrapper}>
  28. <Input value={value} onChange={this.handleChange} onPressEnter={this.check} />
  29. <Icon type="check" className={styles.icon} onClick={this.check} />
  30. </div>
  31. ) : (
  32. <div className={styles.wrapper}>
  33. <span>{value || ' '}</span>
  34. <Icon type="edit" className={styles.icon} onClick={this.edit} />
  35. </div>
  36. )}
  37. </div>
  38. );
  39. }
  40. }