在material-ui中使用TextField对象的inputProps时使用带有连字符的css属性

Posted

技术标签:

【中文标题】在material-ui中使用TextField对象的inputProps时使用带有连字符的css属性【英文标题】:use css attribute with hyphen while using inputProps of TextField object in material-ui 【发布时间】:2019-02-26 21:51:40 【问题描述】:

所以我试图在 material-ui 中自定义一个 TextField 组件, 我读到了 inputProps 属性,它可以帮助我使文本居中,不幸的是我尝试了这样的事情:

<TextField
  required
  id="userName"
  label="User name:"
  defaultValue="enter your user name"
  margin="normal"
  fullWidth=true
  inputProps= textAlign: 'center', 
/>

但是我得到一个关于 textAlign 属性的错误,它不会从 camelCase 转换为连字符大小写 text-align,而且我不能写 text-align,因为它无效......我该怎么办?

这是错误: React 无法识别 DOM 元素上的 textAlign 属性。如果您有意希望它作为自定义属性出现在 DOM 中,请将其拼写为小写 textalign。如果您不小心从父组件传递了它,请将其从 DOM 元素中移除。

非常感谢!

【问题讨论】:

【参考方案1】:

您可以使用带引号的属性名称:

<TextField
     required
     id="userName"
     label="User name:"
     defaultValue="enter your user name"
     margin="normal"
     fullWidth=true
     inputProps="text-align": 'center',
 />

注意最后一行的"text-align": 'center',。如果名称不是有效的标识符(在您的情况下,因为连字符),则可以引用属性初始值设定项的左侧(名称)(单引号或双引号)。

更简单的例子:

var obj = 
  "name-with-hyphen": 42
;
console.log(obj["name-with-hyphen"]); // 42

【讨论】:

非常感谢,我真的不知道转义...你知道我可以如何注入带有 text-align:center 作为属性的 style 属性吗?因为现在 text-align:center 不起作用,因为如果你想设置一个输入组件的样式,你必须将它注入到他的样式属性中,就像我现在看到的那样...... 没关系,我玩了一下,发现了如何做到这一点:inputProps="style":textAlign:"center"

以上是关于在material-ui中使用TextField对象的inputProps时使用带有连字符的css属性的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS material-ui TextField 应用 css

如何在 React 中使用 Material-UI 在 onFocus 事件的 Textfield 中选择部分文本?

反应如何使用 TypeScript 在 Textfield Material-UI 中使用图标

在一个组件中使用 formik-material-ui TextField 和 material-ui TextField 时出现“警告:Prop `className` 不匹配...”

以编程方式在 material-ui Autocomplete TextField 中设置值

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