Замена для inputStyle
будет inputProps
:
const inputStyle = { WebkitBoxShadow: "0 0 0 1000px white inset" };
<TextField name="last_name" inputProps={{ style: inputStyle }} />
InputProps
против inputProps
- распространенная точка недоразумения.Прописная буква «I» InputProps
предоставляет реквизиты для элемента Input внутри TextField
(Input
переносит нативный input
в div
).Строчная буква «i» inputProps
предоставляет реквизиты для собственного элемента input
, отображаемого в компоненте Input
.Если вы хотите предоставить встроенные стили для нативного элемента 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 и добавить "&"для ссылки на селектор родительского правила :
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);
Вы также можете использовать любой из этих подходов к классу, но используя прописные буквы "I" InputProps
через classes
свойство:
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);
Вот рабочий пример со всеми этими подходами: