File size: 1,221 Bytes
f3f614f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import styles from './index.module.less';
import classNames from 'classnames';

// 递归组件用于渲染mindMap中的节点
const MindMapItem = ({ item, isEnd }: any) => {
  // 递归渲染子节点
  const renderChildren = () => {
    if (item.children && item.children.length > 0) {
      return (
        <ul className={item.children.length === 1 ? styles.onlyone : ''}>
          {item.children.map((child: any) => (
            <MindMapItem key={child.name} item={child} isEnd={isEnd} />
          ))}
        </ul>
      );
    }
    return null;
  };

  return (
    <li>
      <article className={
        classNames(
          item.state === 1 ? styles.loading : item.state === 2 ? styles.disabled : item.state === 3 ? styles.finished : "",
          item.id === 0 ? styles.init : ''
        )}>
        <span>{item.name}</span>
        {item.state === 1 && <div className={styles.looping}></div>}
        {item.id !== 0 && <div className={styles.finishDot}></div>}
      </article>
      {item.children.length > 0 && renderChildren()}
      {
        isEnd && item.children?.length === 0 && <div className={classNames(styles.endLine, "endline")}></div>
      }
    </li>
  );
};

export default MindMapItem;