何时在 Material UI 中使用“classes”与“className”?

2024-02-05

我对这两个属性有点困惑。如果我有,

const useStyles = makeStyles(() => ({
  style: {
    width: 600,
    height: 400,
  },
}));

那么,我可以做的是,

const classes = useStyles();

<SomeComponent className={classes.style} />

但我也可以做到,

const classes = useStyles();

<SomeComponent classes={classes} />

这两者有什么区别?


这是 MUI 的一个非常令人困惑的方面,但是一旦你掌握了它 - 它就非常简单了。

假设您正在编写一个组件,并使用 JSS 对其进行样式设置:

const useStyles = makeStyles(theme => ({
  root: {
    margin: theme.spacing(1)
  },
  in: {
    padding: 8
  }
}));

function MyComponent(){
  const classes = useStyles();
  return (
    <Outside className={classes.root}>
      <Inside className={classes.in} />
    </Outside>
  )
}

请注意,组件本质上是组件的组合(或层次结构) -Outside and Inside在这个最小的示例中,但 MUI 组件通常具有两个以上(样式化)嵌套组件。

现在您想要将此组件导出为库的一部分,并允许开发人员设计所有涉及的组件的样式(包括Outside and Inside)。你会怎么做?

MUI 的作用是让您提供classes属性(您将在文档中看到每个组件的规则名称 -root and in在我们的例子中)这将是merged如果您愿意的话,可以将其放入 MUI 自己的规则或样式表中(在MUI code https://github.com/mui-org/material-ui/blob/4fba0dafd30f608937efa32883d151ba01fc9681/packages/material-ui/src/Checkbox/Checkbox.js#L181这是使用withStyles HOC https://material-ui.com/styles/advanced/#withstyles).

为了方便起见,每个组件还接受className合并到根元素的 className 中的属性 (Outside在我们的例子中)。

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

何时在 Material UI 中使用“classes”与“className”? 的相关文章

随机推荐

  • 让gulp动态地将css写入与处理后的scss文件相同的目录中

    我希望编写 gulpfile js 扫描主题目录中的 style scss 文件 其想法是读取 style scss 文件并在同一目录中写入相应的 style css 和 min 文件 我遇到的问题是 在不确切知道目录是什么的情况下 我找不
  • 如何检查字符串是否仅包含拉丁字符?

    如何检查字符串是否包含 a zA Z 仅限字符 Example var str 123z56 不需要 jQuery if str match a z i alphabet letters found
  • 多维数组填充

    我正在尝试填充多维数组中的一个区域 但不确定该方法 例如我有以下数组 var map 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 2 0 0 0 0 2 0 0 0 2 0 2 0 0 2 0 0 0 2 0
  • Eclipse 2020-06 Javascript - 语法突出显示不起作用

    将我的 Eclipse IDE 更新到实际的 2020 06 版本后 JavaScript 的语法突出显示不再起作用 这是一个已知 常见问题吗 我该如何解决这个问题 在花了大半天的时间研究它 包括安装 Eclipse PDT 的新实例 后
  • 在受限用户帐户 XP 中运行时,C# 应用程序无法读取/写入管理员创建的文件

    我有一个可供所有用户 管理员或受限用户 在 NET 特别是 C 中使用的应用程序 当应用程序首次启动时 它会在 C Documents and Settings All Users Documents 中创建一些后续启动所需的文件 如果 X
  • 是否有用于生成 MOBI 电子书文档的 Java 或 Ruby 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Calibre 项目中有一个用于此目的的 Python 库 但我想找到一个可以从 Clojure 或 Ruby 使用的库 有任何想法吗 查
  • 生成图像并将其与其他内容一起显示在 JSP 中

    我正在使用 JFreeChart 根据用户输入生成动态图表 我有一个带有一些文本框和组合框的 JSP 用户输入并提交它 操作处理它 生成图表图像 我需要在文本框 组合框下方的同一个 JSP 上显示此图像 如果我使用response setC
  • 构建 VITE 应用程序时如何分配自定义 CSS 文件名?

    是否可以在VITE中构建并使用application name css or my site name css VITE 可以选择构建自定义 JS 文件 但不能构建自定义 CSS 或 SCSS 文件 用于导出 https vitejs de
  • 如何在 XCassets 中使用立方体纹理类型

    我正在尝试学习 SceneKit 开发并尝试在后台添加天空盒 为了存储立方体贴图纹理 我发现 XCAssets 有一个类型立方体纹理集 https developer apple com library archive documentat
  • 单向 SSL 是单向加密吗?

    如果使用 SSL 的一种方式 服务器证书身份验证 则从客户端发送的数据将使用服务器证书的公钥进行加密 因此客户端发送的数据可以得到隐私保护 我的问题是 这是否意味着从服务器发送到客户端的一种方式 SSL 数据未加密并以纯文本形式发送 对于服
  • JSF 中的线程?

    我是 JSF 新手 我需要使用 Threads 来处理 google 地图 我正在使用 primefaces 进行谷歌地图 但我需要在后台执行一个线程以从数据库获取纬度和经度 然后在地图中绘制标记 您的问题并非特定于 JSF 而是针对一般的
  • Facebook 页面插件无法正常工作

    我需要一个嵌入式 Facebook 页面插件 但是facebook的代码生成器不起作用 当我给出 facebook 页面的 url 时 生成器不会给出该页面的代码 预览模式下也不会出现该页面 脸书页面是 https www facebook
  • PE格式,IAT目录有什么用

    在 PE 格式中 我们有导入表目录 通过IMAGE DIRECTORY ENTRY IMPORT 和 IAT 目录 通过以下方式访问 IMAGE DIRECTORY ENTRY IAT 两者都是可选标头数据目录的一部分 使用导入表 加载器动
  • memcpy 溢出边界利用? (破坏堆栈)

    我试图弄清楚这是否会以某种方式溢出 void print address char p arp hw int i hw length size p OFFSET1 189 4 193 memcpy hw addr packet OFFSET
  • C++ 成员函数指针

    我正在用 C 做一个小游戏 我正在发现类成员函数指针 我不知道如何让它们以正确的方式工作 但这是我的尝试 A struct where the function pointer will be stored for the call By
  • django数据库同步以供离线使用

    我有一台主 django 服务器 用于存储数据 mysql 数据库 在线 我希望许多用户在他们的笔记本电脑上同步此数据库的副本 仅必须复制增量 sqlLite DB 离线 用户无权访问主服务器 用户可以查看和更新 其本地数据库 返回在线 用
  • 从受密码保护的 Excel 文件到 Python 对象

    我使用的是 Windows 7 Python 2 7 和 Microsoft Excel 2013 我知道从here https stackoverflow com questions 15285068 from password prot
  • Kotlin 中如何将 String 转换为 Int?

    我正在 Kotlin 中开发一个控制台应用程序 我在其中接受多个参数main 功能 fun main args Array
  • Spring Boot FlywayException:无法连接到数据库。配置url、用户和密码

    当我跑步时maven flyway migrate 我收到错误 无法执行目标 org flywaydb flyway maven plugin 6 5 5 migrate default cli 在项目 myProject 上 org fl
  • 何时在 Material UI 中使用“classes”与“className”?

    我对这两个属性有点困惑 如果我有 const useStyles makeStyles gt style width 600 height 400 那么 我可以做的是 const classes useStyles