首页 > 解决方案 > 在材质 ui 中像插值一样 sass 以获得像类名一样的 BEM

问题描述

const useStyles = makeStyles({
  block: {

   `${&}__element `: {
      color: 'green',
    }
  },
});

上面的代码在材质 UI 中不起作用。有什么方法可以像' 插值一样插值parent selector '&'来获取类名?block__elementsass

标签: reactjsmaterial-uibem

解决方案


您不需要任何特殊的语法。&本身将替换为.classNameGeneratedForBlock,因此您可以执行以下操作:

const useStyles = makeStyles({
  block: {
    "&__element": {
      color: "green"
    }
  }
});

这是一个完整的工作示例:

import React from "react";
import { makeStyles } from "@material-ui/core/styles";

const useStyles = makeStyles({
  block: {
    backgroundColor: "lightblue",
    "&__element": {
      color: "green"
    }
  }
});

export default function App() {
  const classes = useStyles();
  return (
    <div className={classes.block}>
      <h1 className={`${classes.block}__element`}>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>
    </div>
  );
}

编辑乐观-leftpad-nkkh7


推荐阅读