Spaces:
Sleeping
Sleeping
File size: 1,994 Bytes
dc9e27a |
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
import styles from './index.module.less';
import classNames from 'classnames';
import { useEffect, useContext } from 'react';
import { MindsearchContext } from '../../provider/context';
// 递归组件用于渲染mindMap中的节点
const MindMapItem = ({ item, isEnd, selectNode }: any) => {
const { activeNode, chatIsOver } = useContext(MindsearchContext);
// console.log('[ms item------]', item, isEnd, currentNodeName)
// 递归渲染子节点
const renderChildren = () => {
if (item?.children?.length > 0) {
return (
<ul className={item.children.length === 1 ? styles.onlyone : ''}>
{item.children.map((child: any, idx: number) => (
<MindMapItem key={`${child?.name}-${idx}`} item={child} isEnd={isEnd} selectNode={selectNode} />
))}
</ul>
);
}
return null;
};
const handleClick = () => {
if (item?.state === 0 || (item?.name === '原始问题' || item?.name === '最终回复')) {
return;
}
selectNode(item?.name);
};
return (
<li>
<article
onClick={handleClick}
className={classNames(
item?.state === 1 ? styles.loading : item?.state === 2 ? styles.disabled : item?.state === 3 ? styles.finished : '',
item?.id === 0 ? styles.init : '',
!item?.name ? styles.emptyNode : '',
item?.name && item?.name === activeNode ? styles.active : '',
(isEnd && !chatIsOver) ? styles.forbidden : ''
)}
>
<span>{item?.name}</span>
{item?.state === 1 && <div className={styles.looping} />}
{item?.id !== 0 && <div className={styles.finishDot} />}
{item?.name && item?.name === activeNode ? <div className={styles.dot} /> : ''}
</article>
{item?.children?.length > 0 && renderChildren()}
{isEnd && (item?.children?.length === 0 || !item?.children) && <div className={classNames(styles.endLine, 'endline')} />}
</li>
);
};
export default MindMapItem;
|