如何在不使用 MUIThemeProvider 的情况下覆盖 material-ui TextField 组件的样式?

Posted

技术标签:

【中文标题】如何在不使用 MUIThemeProvider 的情况下覆盖 material-ui TextField 组件的样式?【英文标题】:How to override styles for material-ui TextField component without using the MUIThemeProvider? 【发布时间】:2018-10-30 09:12:52 【问题描述】:

如何使用以下代码隐藏/删除 TextField 组件中的下划线不使用

const theme = createMuiTheme(
  overrides: 
    MuiInput: 
      underline: 
        '&:hover:not($disabled):before': 
          backgroundColor: 'rgba(0, 188, 212, 0.7)',
        ,
      ,
    ,
  ,
);

我想使用道具并根据文档:https://material-ui.com/api/input/

我应该可以更改下划线道具,但它不起作用。

【问题讨论】:

【参考方案1】:

这就是你的做法:

<TextField
    id="name"
    label="Name"
    value=this.state.name
    margin="normal"
    InputProps=disableUnderline: true
/>

我是怎么知道的?

您已链接到Input documentation,它确实有一个disableUnderline 属性。

但是,您使用的是TextField component:

了解文本字段很简单很重要 在以下组件之上的抽象:

表单控件 输入标签 输入 FormHelperText

如果您查看TextField 的可用道具列表:

InputProps - 对象 - 应用于 Input 元素的属性。

【讨论】:

嘿伙计。是的,我已经想通了。无论如何感谢您的帮助! 当我使用 inputProps 时,自动完成免费独奏的建议消失了。【参考方案2】:

我找到了解决此问题的方法..

<TextField InputProps=classes: underline: classes.underline />

const styles = theme => (
  underline: 
    '&:hover': 
      '&:before': 
        borderBottom: ['rgba(0, 188, 212, 0.7)', '!important'],
      
    ,
    '&:before': 
      borderBottom: 'rgba(0, 188, 212, 0.7)',
    
  
)

【讨论】:

【参考方案3】:

使用最新版本的 Material-UI,这是我完成这项工作的唯一方法:

<TextField InputProps=classes: underline: classes.underline />

const styles = theme => (
  underline: 
    '&:before': 
      borderBottomColor: colors.white,
    ,
    '&:after': 
      borderBottomColor: colors.white,
    ,
    '&:hover:before': 
      borderBottomColor: [colors.white, '!important'],
    ,
  ,
)

【讨论】:

以上是关于如何在不使用 MUIThemeProvider 的情况下覆盖 material-ui TextField 组件的样式?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 AudioQueueRef 的情况下在 AudioQueue 中设置音量?

如何在不安装 Zend 框架的情况下使用 Zend 库

如何在不更改链接结构的情况下使用 \ 转义字符 (、)、[、]、*、_、:[]()

如何在不使用 sleep() 的情况下使用 ontimer 函数延迟进程?

如何在不使用 Flexbox 的情况下水平对齐元素?

如何在不安装的情况下使用数据库?