import React, { useState, useEffect } from 'react'; import { DownOutlined, RightOutlined } from '@ant-design/icons'; import { Tree, Radio } from 'antd'; import '../g.scss'; function CheckTree(props: ICheckTree) { // ……………………………………………………………………………………………………………………………………^_^复制的代码,未开发^_^…………………………………………………………………………………………………………………………………… const { scenes, sceneSelectId,change,value } = props; const [scenesList, setScenesList] = useState([]); const [expandedKeys, setExpandedKeys] = useState<(string | number)[]>([]); const [sceneSelected, setSceneSelected] = useState(""); const [linkTarget, setLinkTarget] = useState<{key:string|number;title:string}>(value?.[1]); // 保存链接的目标 useEffect(() => { const list = scenes?.map((item) => { item?.children?.forEach((child) => { child.folderId = item?.key; }); return item; }); setScenesList(list); }, [scenes]); useEffect(() => { let hasKey = false; scenes?.forEach((item) => { item?.children?.forEach((child) => { if (child?.key === value?.key) { setSceneSelected(item?.key); hasKey = true; } }); }); if(!hasKey && value?.key){ setLinkTarget(null); change?.("linkTargetChange",{}); }else{ if(value?.key){ setLinkTarget(value); } const keys = []; scenes?.forEach((item) => { keys.push(item.key); }); setExpandedKeys(keys); } }, [value]); // 切换选中 const onChange = (key: string|number,title: string,folderId: string|number) => { // if(!sceneSelectId?.includes(key)){ if(key === linkTarget?.key){ setLinkTarget(null); change?.("linkTargetChange",{}); setSceneSelected(""); }else{ setLinkTarget({key,title}); change?.("linkTargetChange",{key,title,folderId}); } // } }; const handleTitleRender = (nodeData: NodeData) => { if (nodeData?.children) { return (
expandedKeys.includes(nodeData?.key) ? setExpandedKeys( expandedKeys.filter((key) => key !== nodeData?.key) ) : setExpandedKeys([...expandedKeys, nodeData?.key]) } >

{expandedKeys.includes(nodeData?.key) ? ( ) : ( )} {nodeData?.title}

); } else { return (
onChange(nodeData?.key,nodeData?.title,nodeData?.folderId)} > {nodeData?.title}
); } return nodeData.title; }; return (
} onExpand={(keys) => setExpandedKeys(keys)} />
); } export default CheckTree; export interface ICheckTree { scenes: NodeData[]; value: {key:string,title:string}; sceneSelectId: string[]; change: Function; } export interface NodeData { title: string; key: string | number; folderId?: string | number; selectable?: boolean; children?: NodeData[]; }