使用 makeStyles 将 class 嵌套在另一个选定的 class 中

Nested class in another selected class with makeStyles

我需要知道如何在选择 root 时定位 'element'

这是 makeStyles:

const useStyles = makeStyles(theme => ({
   root:{
      '&.selected': {
      }
   },
   element: {
   }
})

这是 jsx

<div className={`${classes.root} ${elementSelected ? 'selected : ''}`}>
  <div className={classes.element}>
  </div>
</div>

您可以使用 https://www.npmjs.com/package/classnames 来实现。

const useStyles = makeStyles(theme => ({
   root:{
      '&.selected $element': {
      }
   }
})

还有你的 JSX

import classNames from 'classnames';

...

<div className={classNames(classes.root, elementSelected ? 'selected : '')}>
  <div className={classes.element}>
  </div>
</div>

此答案可替代@Chris 的答案。

您不需要在项目中包含其他包,因为您可以使用 Material-UI 中的 'clsx'。方法如下:

const useStyles = makeStyles(theme => ({
    root:{
        '&.selected $element': {
        }
    }
})

clsx 软件包在安装时会附带Material-UI。

import clsx from 'clsx';
const classes = useStyles(props);

...

<div className={clsx(classes.root, {
        [classes.selected]: elementSelected
    })}
>
    <div className={classes.element}>
    </div>
</div>