如何以编程方式展开或折叠 Material Ui 中的树项?

IT技术 reactjs material-ui
2021-05-20 20:35:51

有没有办法以编程方式扩展和折叠材质 ui 中的树项?我可以通过单击项目来做到这一点,但有时我想根据树视图中的操作折叠和展开树项目。是否可以?

2个回答

您可以使用 TreeViewexpandedprops实现这一点
下面的代码在挂载时扩展了 ID 为“1”的 TreeItem。

import React, {useEffect, useState} from 'react';
import TreeView from '@material-ui/lab/TreeView';
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
import ChevronRightIcon from '@material-ui/icons/ChevronRight';
import TreeItem from '@material-ui/lab/TreeItem';

export default function FileSystemNavigator() {
  const [expanded, setExpanded] = useState([]);

  useEffect(() => {
    setExpanded(["1"])
  },[])

  return (
    <TreeView
      defaultCollapseIcon={<ExpandMoreIcon />}
      defaultExpandIcon={<ChevronRightIcon />}
      expanded={expanded}
    >
      <TreeItem nodeId="1" label="Applications"    
>
        <TreeItem nodeId="2" label="Calendar" />
        <TreeItem nodeId="3" label="Chrome" />
        <TreeItem nodeId="4" label="Webstorm" />
      </TreeItem>
      <TreeItem nodeId="5" label="Documents"
>
        <TreeItem nodeId="6" label="Material-UI">
          <TreeItem nodeId="7" label="src">
            <TreeItem nodeId="8" label="index.js" />
            <TreeItem nodeId="9" label="tree-view.js" />
          </TreeItem>
        </TreeItem>
      </TreeItem>
    </TreeView>
  );
}

代码沙盒

这个答案是者Riham努尔问题在此的注释部分答案(将无法在评论由于较少的声誉回复)。

如果我只想在折叠其他树项时选择选定的父树项怎么办?比如当我选择节点 1,然后节点 6 崩溃?

只需添加所选节点的 nodeId 即可轻松获得所需的结果。您可以通过代码Code SandBox

PS:我希望我正确理解了这个问题,对不起,我在答案部分添加了这个。请让我知道是否有更好的方式将答案传达给 Riham。