javascript - Material UI,如何覆盖嵌套MUI组件的样式?

标签 javascript reactjs material-ui react-admin jss

我正在使用react-admin我正在使用他们的 Create使用来自 @material-ui/coreTextField 的组件。

当然我已经阅读了文档here .

我想完全自定义自定义 View 的渲染,这就是生成的 html 的外观:

<div class="create-page Component-root-55" notification="">
   <div class="MuiPaper-root-58 MuiPaper-elevation1-61 MuiPaper-rounded-59 MuiCard-root-57 Component-card-56 Create-card-53">
      <form class="simple-form" locale="en">
         <div class="MuiCardContent-root-86 CardContentInner-root-85">
            <div class="ra-input ra-input-email">
               <div class="MuiFormControl-root-11 MuiFormControl-marginNormal-12 MuiFormControl-fullWidth-14" locale="en">
                  <label class="MuiFormLabel-root-20 MuiInputLabel-root-15 MuiInputLabel-formControl-16 MuiInputLabel-animated-19" data-shrink="false" for="email"><span>Email *</span></label>
                  <div class="MuiInput-root-27 MuiInput-fullWidth-34 MuiInput-formControl-28 MuiInput-underline-31"><input aria-invalid="false" class="MuiInput-input-35 MuiInput-inputType-38 withRouter-Connect-SubscribeNewsletterForm---inputType-52" id="email" name="email" type="email" value=""></div>
               </div>
            </div>
         </div>
         <div class="MuiToolbar-root-97 MuiToolbar-regular-99 MuiToolbar-gutters-98 Toolbar-toolbar-92 Toolbar-desktopToolbar-93" role="toolbar">
            <div class="Toolbar-defaultToolbar-95">
               <button tabindex="0" class="MuiButtonBase-root-129 MuiButton-root-103 MuiButton-contained-114 MuiButton-containedPrimary-115 MuiButton-raised-117 MuiButton-raisedPrimary-118 SaveButton-button-101" type="submit">
                  <span class="MuiButton-label-104">
                     <svg class="MuiSvgIcon-root-132 SaveButton-iconPaddingStyle-102" focusable="false" viewBox="0 0 24 24" aria-hidden="true">
                        <g>
                           <path d="M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z"></path>
                        </g>
                     </svg>
                     Save
                  </span>
                  <span class="MuiTouchRipple-root-139"></span>
               </button>
            </div>
         </div>
         <div class="Toolbar-spacer-96"></div>
      </form>
   </div>
</div>

我在 Material-ui 中重写样式方面只有一些经验。

由于 Create.js 中的解释,成功找到如何将 boxShadow 删除到 card 后,我正在努力寻找如何编辑卡片中的内容创建。

例如,我想删除 MuiToolbar 的背景,用 MuiToolbar-regular-99 标识,这就是我所拥有的:


const createStyles = {
  card: {
    boxShadow: 'none',
    borderRadius: 0,
  },
  toolbar: {
    toolbar: {
      backgroundColor: 'transparent',
    },
  },
};

const Create = withStyles(createStyles)(function Create({ classes, ...rest }) {
  return (
    <CreateDefault
      classes={classes}
      {...rest}
    />
  );
});

我也尝试过:

const createStyles = {
  card: {
    boxShadow: 'none',
    borderRadius: 0,
  },
  toolbar: {
    backgroundColor: 'transparent',
  },
};

const Create = withStyles(createStyles)(function Create({ classes, ...rest }) {
  console.log(classes);
  return (
    <CreateDefault
      classes={{
        card: classes.card,
        toolbar: classes.toolbar
      }}
      {...rest}
    />
  );
});

这不会将任何 CSS 应用于工具栏,我不明白其中的逻辑,并且发现 jss 太复杂了,我必须寻求帮助。

即使使用包装许多的包装器,如何使用 Material UI 组件覆盖嵌套样式?

编辑代码和框

我能得到的最接近的:https://codesandbox.io/s/2uboj

它默认没有灰色工具栏,因为可能使用的是react-admin版本,但你可以看到目标。

最佳答案

您没有沙箱,我看不到您在哪里使用 <TextField />组件,所以我无法测试这是否有效,但我可以向您展示两个可以帮助您学习类(class)的选项。

  1. 要应用多个类,您应该执行以下操作:

    className={[classes.card, classes.toolbar].join(' ')}

  2. 要访问 Material 组件内的元素,您需要使用 Material 文档中组件 API 下列出的 CSS API。 TextField有点复杂,因为它结合了其他几个组件。您需要将类作为 prop 传递给每个组件。例如

    <TextField InputProps={classes={classes}}

关于javascript - Material UI,如何覆盖嵌套MUI组件的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56151942/

相关文章:

javascript - Angular 数据是 Angular 缓存的依赖项还是反之亦然?

javascript - 向 Spotify API 发送请求

javascript - Express 将 URL 中的 “%2F” 替换为 “/”

javascript - 在 React 中有条件地设置事件类

material-ui - 如何使用 mkdocs-material 将登陆页面添加到 mkdocs 文档站点?

javascript - SelectField 的 getValue()

javascript - 如何确定页面的哪一部分应该首先加载?

javascript - 当父 div 溢出隐藏时,div 投影被切断

reactjs - 有状态和无状态 react 组件

javascript - 有条件地激活 Material UI 工具提示?