如何将材质的 TreeView 的折叠/展开图标更改为右侧?

2024-04-13

我正在尝试使用 Reactjs 中的材料来实现一棵树。但是,根据我的设计,折叠和展开的按钮应该位于右侧。

另外,在添加图标时出现错误TreeItem像这样:

<TreeItem nodeId="1" label="RSMSSB" icon={FolderIcon}>

整个代码:

import React from "react";
import { makeStyles } from "@material-ui/core/styles";
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";
import FolderIcon from '@material-ui/icons/Folder';
const useStyles = makeStyles({
  root: {
    height: 216,
    flexGrow: 1,
    maxWidth: 400
  }
});

export default function ControlledTreeView() {
  const classes = useStyles();
  const [expanded, setExpanded] = React.useState([]);

  const handleChange = (event, nodes) => {
    setExpanded(nodes);
  };

  return (
    <TreeView
      className={classes.root}
      defaultCollapseIcon={<ExpandMoreIcon />}
      defaultExpandIcon={<ChevronRightIcon />}
      expanded={expanded}
      onNodeToggle={handleChange}
    >
      <TreeItem nodeId="1" label="RSMSSB" icon={FolderIcon}>
        <TreeItem nodeId="2" label="Science"></TreeItem>
        <TreeItem nodeId="3" label="Mathematics">
          <TreeItem nodeId="4" label="Polynomials"></TreeItem>
          <TreeItem nodeId="7" label="Inequalities"></TreeItem>
        </TreeItem>
        <TreeItem nodeId="8" label="English"></TreeItem>
      </TreeItem>
    </TreeView>
  );
}

设计模拟:

Thanks.

EDIT:
工作示例:https://codesandbox.io/s/purple-night-mgzwh https://codesandbox.io/s/purple-night-mgzwh


基于自定义树视图 https://material-ui.com/components/tree-view/#gmail-clone例如,您可以创建一个自定义组件,该组件需要text and an icon传递到的标签属性TreeItem并在右侧添加展开/折叠图标flex-direction: row-reverse; to the content的类别TreeItem:

const useTreeItemStyles = makeStyles(theme => ({
  content: {
    flexDirection: 'row-reverse'
  },
  labelRoot: {
    display: 'flex',
    alignItems: 'center',
    padding: theme.spacing(0.5, 0),
  },
  labelIcon: {
    marginRight: theme.spacing(1),
  },
  labelText: {
    fontWeight: 'inherit',
    flexGrow: 1,
  },
}));

function StyledTreeItem(props) {
  const classes = useTreeItemStyles();
  const { labelText, labelIcon: LabelIcon, ...other } = props;

  return (
    <TreeItem
      label={
        <div className={classes.labelRoot}>
          <LabelIcon color="inherit" className={classes.labelIcon} />
          <Typography variant="body2" className={classes.labelText}>
            {labelText}
          </Typography>
        </div>
      }
      classes={{
        content: classes.content
      }}
      {...other}
    />
  );
}

...

<TreeView
      className={classes.root}
      defaultCollapseIcon={<ExpandMoreIcon />}
      defaultExpandIcon={<ChevronRightIcon />}
      expanded={expanded}
      onNodeToggle={handleChange}
    >
      <StyledTreeItem nodeId="1" labelText="RSMSSB" labelIcon={FolderIcon} />

...

工作示例:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将材质的 TreeView 的折叠/展开图标更改为右侧? 的相关文章

随机推荐

  • SQL if语句在where子句中用于搜索数据库

    我正在创建一个存储过程来返回搜索结果 其中某些参数是可选的 我想要一个 if 语句 where条款但无法使其发挥作用 这where子句应仅按非空参数进行过滤 这是 sp ALTER PROCEDURE spVillaGet Add the
  • 如何淡入隐藏的 JavaFX 标签

    如何在隐藏项目上添加精美的 JavaFX 事件 例如 当我显示隐藏标签时 我想使用 淡入淡出 效果 由单击按钮触发 调用下面的方法时如何添加效果 FXML private void handleButtonAction ActionEven
  • 使用带有 unicode 的 xhtml2pdf 时遇到问题

    我一直在尝试转换希伯来语 html 文件但没有成功 无论我尝试何种编码 希伯来语字符在输出 PDF 中都会显示为黑色矩形 我尝试了 pisa 发行版中包含的一些 unicode 测试文件 pisa 3 0 33 test test unic
  • ASP.Net Identity 2 通过短信重置密码

    我希望在重置密码时向用户发送短信 我已经具备发送短信的功能 我只需要有关如何使用 Identity 2 0 进行设置的指南 我似乎无法在网上找到任何有用的信息 参考代码本身也没有正确注释 我想生成一个安全代码 将其发送给用户 然后他必须将其
  • sp改变时函数导入

    我正在使用实体框架的函数导入功能从 net 4 0 代码调用存储过程 但是 每次更改存储过程结果集时 我都必须删除函数导入并再次添加 有什么方法可以通过更改实体模型中的代码来合并更改 而不必再次删除并添加函数导入 谢谢 使用函数导入时 一些
  • Oracle 主键:NUMBER 与 NUMBER(7,0)

    指定 PK 的精度有什么好处吗 鉴于记录可能永远不会超过几千条 7 0 是否足够 不指定精度有什么危险吗 NUMBER 7 0 只是限制了值域 它们的内部表示没有不同 CREATE TABLE t pk col1 NUMBER 7 0 NO
  • 访问数据库表单 ActiveX 控件错误

    我正在使用一个带有日期选择器控件的表单 当打开表单并单击日期选择器控件 MSCOMCT2 OCX 时 我收到以下无用的错误 您输入的表达式 Change 作为偶数属性设置 产生以下错误 加载 ActiveX 时出错 控制您的一份表格或报告
  • save_and_open_page 不适用于水豚 2.0?

    我刚刚将水豚更新到 2 0 并且所有 save and open page 调用都返回一个没有样式的 html 页面 它在页面顶部正确地提供了样式表链接 当我恢复到水豚 1 3 时 样式再次起作用 有人知道如何解决这个问题 和 或问题是什么
  • Android底层读取大于2GB的SD卡

    我的 Android 应用程序尝试通过访问实际设备 在我的例子中为 dev block vold 179 1 来读取 SD 卡的物理扇区 当然这是在有root权限的手机上 我可以将设备打开为FileInputStream 并从中读取数据 但
  • 获取我的 Facebook 页面上粉丝的用户列表 GRAPH API

    如何获取我的 Facebook 页面上粉丝的用户列表 遗憾的是 目前无法获取您的 Facebook 页面的粉丝列表 目前尚不清楚这是设计使然还是错误 This 脸书错误报告 http bugs developers facebook net
  • 流畅的 NHibernate 将 IList 作为值映射到单列

    我有这门课 public class MyEntity public virtual int Id get set public virtual IList
  • 在nodejs服务器的内存中存储

    似乎有很多有前途的软件包 但没有明确建议哪个是最快的 可扩展的 哪个是内存效率更高的 npm 安装memoizee https www npmjs com package memoizee npm 安装内存缓存 https www npmj
  • 在 iPhone/Android 中始终显示滚动条 [重复]

    这个问题在这里已经有答案了 有没有办法让滚动条在移动浏览器中始终可见 默认情况下 仅当发生触摸 滑动时 可滚动页面的滚动才可见 如何使滚动条始终可见 在你的 css 样式上尝试一下这个 webkit scrollbar webkit app
  • 在php中获取XML文件内容作为字符串

    我想将 xml 文件的内容显示为本身 我不想解析它 而是只是读取它的内容并显示它 I tried content file get contents test xml But the content其中有 xml 当我var dump co
  • 如果mysql数据类型是默认值为“0000-00-00 00:00”的时间戳,如何检查是否为空?

    我想找出最好的返回方式true or false如果 mysql 数据类型是TIMESTAMP为 null 返回日期0000 00 00 00 00 我尝试过这样的事情 if mycolumn 0000 00 00 00 00 echo n
  • ArrayList 是如何工作的?

    ArrayList内部使用什么数据结构 内部有一个ArrayList使用一个Object 当您将项目添加到ArrayList 列表检查后备阵列是否还有剩余空间 如果有空间 新项目将添加到下一个空白处 如果没有空间 则会创建一个更大的新数组
  • Kubectl 与 minikube - 重新启动集群时出错:kubeadm.yaml

    我安装了 kubernetes minikube install MacOs 10 12 6 但在尝试启动 minikube 时 我不断收到错误 minikube start Starting local Kubernetes v1 10
  • Django Rest 框架:如何在 ModelViewSet 中关闭/打开分页

    我在用着Django REST 框架 https github com encode django rest framework tree master with djangorestframework csv https github c
  • 非分组表的 UITableView 节标题高度

    问候 我知道UI表格视图 节标题高度仅用于分组表 但无论如何我都会问 如果有某种方法可以做到这一点并不明显 有没有办法更改节标题高度 以及字体 大小 NON 分组表 希望 是 或至少是 也许 但担心这可能是 否 伙计们 努力吧 Yes 使用
  • 如何将材质的 TreeView 的折叠/展开图标更改为右侧?

    我正在尝试使用 Reactjs 中的材料来实现一棵树 但是 根据我的设计 折叠和展开的按钮应该位于右侧 另外 在添加图标时出现错误TreeItem像这样