gpt4 book ai didi

reactjs - Material UI 删除了 TextField 自动填充上的黄色背景

转载 作者:行者123 更新时间:2023-12-01 22:29:16 25 4
gpt4 key购买 nike

我很难从 Material UI TextField 组件中删除自动填充时的黄色背景。

在旧版本中我是这样做的:

const inputStyle = { WebkitBoxShadow: '0 0 0 1000px white inset' };
<TextField
...
inputStyle={inputStyle}
/>

但在最近的版本中,inputStyle 属性已被删除,并添加了 InputProps

我尝试通过这种方式删除它,但黄色背景颜色仍然出现: enter image description here

import React from "react";
import PropTypes from "prop-types";
import { withStyles } from "@material-ui/core/styles";
import TextField from "@material-ui/core/TextField";

const styles = {
root: {
':-webkit-autofill': {
WebkitBoxShadow: '0 0 0 1000px white inset',
backgroundColor: 'red !important'
}
},
input: {
':-webkit-autofill': {
WebkitBoxShadow: '0 0 0 1000px white inset',
backgroundColor: 'red !important'
}
}
};

const renderTextField = (props) => {
const {
classes,
label,
input,
meta: { touched, error },
...custom
} = props;

return (
<TextField
label={label}
placeholder={label}
error={touched && error}
helperText={touched && error}
className={classes.root}
InputProps={{
className: classes.input
}}
{...input}
{...custom}
/>
);
}

renderTextField.propTypes = {
classes: PropTypes.object.isRequired
};

export default withStyles(styles)(renderTextField);

最佳答案

inputStyle 的替代品将是 inputProps:

const inputStyle = { WebkitBoxShadow: "0 0 0 1000px white inset" };
<TextField name="last_name" inputProps={{ style: inputStyle }} />

InputPropsinputProps 是一个常见的混淆点。大写“I”InputPropsInput 提供 Prop TextField 中的元素(Input 将原生 input 包装在 div 中)。小写“i”inputPropsInput 组件中呈现的 native input 元素提供属性。如果您想向 native input 元素提供内联样式,上面的代码示例就可以实现。

还有其他几种方法可以通过 withStyles 使用类来执行此操作。

如果您想使用 className 属性,则该属性需要位于 input 上(而不是包装它的 div),才能达到所需的效果。因此,以下内容也将起作用:

const styles = {
input: {
WebkitBoxShadow: "0 0 0 1000px white inset"
}
};
const MyTextField = ({classes}) => {
return <TextField name="email" inputProps={{ className: classes.input }} />;
}
export default withStyles(styles)(MyTextField);

如果你想利用“:-webkit-autofill”伪类,你只需要调整你的JSS语法并添加 "&" to reference the selector of the parent rule :

const styles = {
input: {
"&:-webkit-autofill": {
WebkitBoxShadow: "0 0 0 1000px white inset"
}
}
};
const MyTextField = ({classes}) => {
return <TextField name="email" inputProps={{ className: classes.input }} />;
}
export default withStyles(styles)(MyTextField);

您还可以利用这些类方法中的任何一种,但通过 classes 使用大写“I”InputProps属性:

const styles = {
input: {
WebkitBoxShadow: "0 0 0 1000px white inset"
}
};
const MyTextField = ({classes}) => {
return <TextField name="email" InputProps={{ classes: { input: classes.input } }} />;
}
export default withStyles(styles)(MyTextField);

这是一个包含所有这些方法的工作示例:

Edit rr9omj7q0p

关于reactjs - Material UI 删除了 TextField 自动填充上的黄色背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54706919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com