Reactjs 设置选定树的样式树视图中的元素

Reactjs 设置选定树的样式树视图中的元素,reactjs,material-ui,Reactjs,Material Ui,我试图覆盖材质UI树视图组件中选定树元素的样式。根据cssapi文档,有一个选中的选择器,但是当我使用它时,我看到整个子树都被样式化了,而不仅仅是选中的项。 仅用于设置选定树项目样式的正确选择器是什么 代码沙盒: 当您对如何覆盖默认材质UI样式有疑问时,最好的资源是查看如何定义默认样式 以下是最相关的部分: 通过查看源代码,也可以找到如下的总体结构: <li className={clsx(classes.root, className, {[classes.selected]: sele

我试图覆盖材质UI树视图组件中选定树元素的样式。根据cssapi文档,有一个选中的选择器,但是当我使用它时,我看到整个子树都被样式化了,而不仅仅是选中的项。 仅用于设置选定树项目样式的正确选择器是什么

代码沙盒:


当您对如何覆盖默认材质UI样式有疑问时,最好的资源是查看如何定义默认样式

以下是最相关的部分:

通过查看源代码,也可以找到如下的总体结构:

<li className={clsx(classes.root, className, {[classes.selected]: selected})}>
   <div className={classes.content}>
      <div className={classes.iconContainer}>
         {icon}
      </div>
      <Typography component="div" className={classes.label}>
         {label}
      </Typography>
   </div>
   {children}
</li>
这相当于:

const TreeItem = withStyles({
  root: {
    "&$selected > $content": {
      color: "red"
    }
  },
  selected: {},
  content: {}
})(MuiTreeItem);
const TreeItem = withStyles({
  root: {
    "&$selected > $content $label": {
      color: "red"
    }
  },
  selected: {},
  content: {},
  label: {}
})(MuiTreeItem);
如果不希望在样式中包含图标,则可以仅在内容中以标签为目标:

const TreeItem = withStyles({
  root: {
    "&.Mui-selected > .MuiTreeItem-content .MuiTreeItem-label": {
      color: "red"
    }
  }
})(MuiTreeItem);
这相当于:

const TreeItem = withStyles({
  root: {
    "&$selected > $content": {
      color: "red"
    }
  },
  selected: {},
  content: {}
})(MuiTreeItem);
const TreeItem = withStyles({
  root: {
    "&$selected > $content $label": {
      color: "red"
    }
  },
  selected: {},
  content: {},
  label: {}
})(MuiTreeItem);

如果要更改背景色,则需要注意默认样式中的更多细节,因为默认样式对背景色做了大量处理,以便正确处理悬停和聚焦状态。

如果您对如何覆盖默认材质UI样式有疑问,最好的资源是查看如何定义默认样式

以下是最相关的部分:

通过查看源代码,也可以找到如下的总体结构:

<li className={clsx(classes.root, className, {[classes.selected]: selected})}>
   <div className={classes.content}>
      <div className={classes.iconContainer}>
         {icon}
      </div>
      <Typography component="div" className={classes.label}>
         {label}
      </Typography>
   </div>
   {children}
</li>
这相当于:

const TreeItem = withStyles({
  root: {
    "&$selected > $content": {
      color: "red"
    }
  },
  selected: {},
  content: {}
})(MuiTreeItem);
const TreeItem = withStyles({
  root: {
    "&$selected > $content $label": {
      color: "red"
    }
  },
  selected: {},
  content: {},
  label: {}
})(MuiTreeItem);
如果不希望在样式中包含图标,则可以仅在内容中以标签为目标:

const TreeItem = withStyles({
  root: {
    "&.Mui-selected > .MuiTreeItem-content .MuiTreeItem-label": {
      color: "red"
    }
  }
})(MuiTreeItem);
这相当于:

const TreeItem = withStyles({
  root: {
    "&$selected > $content": {
      color: "red"
    }
  },
  selected: {},
  content: {}
})(MuiTreeItem);
const TreeItem = withStyles({
  root: {
    "&$selected > $content $label": {
      color: "red"
    }
  },
  selected: {},
  content: {},
  label: {}
})(MuiTreeItem);

如果要更改背景色,则需要注意默认样式中的更多细节,因为默认样式对背景色有很大影响,以便正确处理悬停和聚焦状态。

从@material ui/lab/TreeItem导入MuiTreeItem

从@material ui/core/styles导入{withStyles}

const TreeItem=带有样式{

    root: {
      "&.Mui-selected > .MuiTreeItem-content": {
        background: "#89CFF0"
      },
      "&.MuiTreeItem-root > .MuiTreeItem-content:hover": {
        background: "gray",
      },
      "&.MuiTreeItem-root > .MuiTreeItem-content:hover > .MuiTreeItem-label": {
        background: "#89CFF0",
      },
      
      '@media (hover: none)': {
        backgroundColor: 'transparent',
      },
    }

  })(MuiTreeItem);

从@material ui/lab/TreeItem导入MuiTreeItem

从@material ui/core/styles导入{withStyles}

const TreeItem=带有样式{

    root: {
      "&.Mui-selected > .MuiTreeItem-content": {
        background: "#89CFF0"
      },
      "&.MuiTreeItem-root > .MuiTreeItem-content:hover": {
        background: "gray",
      },
      "&.MuiTreeItem-root > .MuiTreeItem-content:hover > .MuiTreeItem-label": {
        background: "#89CFF0",
      },
      
      '@media (hover: none)': {
        backgroundColor: 'transparent',
      },
    }

  })(MuiTreeItem);

请提供一个您尝试过的样式设置方法,并将该代码包含在问题文本中。@RyanCogswell添加了Codesandbox URL。您可以看到,选择一个节点实际上会点亮整个子树。我只想设置活动节点的样式。谢谢请提供一个您尝试过的样式设置方法,并将该代码包含在其中您的问题文本也是如此。@RyanCogswell添加了Codesandbox URL。您可以看到,选择一个节点实际上会点亮整个子树。我只想设置活动节点的样式。感谢您,为了使标签正确高亮显示,我必须通过执行以下操作来调整:&.MuiTreeItem-root.Mui-selected>.MuiTreeItem content.MuiTreeItem labelTo get t要正确突出显示标签,我必须通过执行以下操作来调整它:&.MuiTreeItem-root.Mui-selected>.MuiTreeItem-content.MuiTreeItem-label