首页 > 解决方案 > 在焦点、反应上更改 Material-UI 文本字段的样式

问题描述

我是第一次学习 Material-UI。我想自定义材质 UI 的 TextField。我可以在未选中文本字段时更改其样式,在聚焦时无法更改其样式。我ThemeProvider用于将样式注入组件。我试过这段代码

import React from "react";
import Checkbox from "@material-ui/core/Checkbox";
import TextField from "@material-ui/core/TextField";

import {
  createMuiTheme,
  makeStyles,
  createStyles,
  Theme as AugmentedTheme,
  ThemeProvider
} from "@material-ui/core/styles";
import { orange, blue, green } from "@material-ui/core/colors";

const useStyles = makeStyles(theme =>
  createStyles({
    root: {
      color: green[900],
      "&.Mui-focused": {
        border:"2px solid blue",
    }
    },

  })
);

function CustomCheckbox() {
  const classes = useStyles();

  return (
    <TextField
    variant='outlined'
    classes={{
      root:classes.root,
    }}      
    />
  );
}
const theme = createMuiTheme({
});

export default function CustomStyles() {
  return (
    <ThemeProvider theme={theme}>
      <CustomCheckbox />
    </ThemeProvider>
  );
}

问题:
如何改变 TextField 的焦点样式?帮助将不胜感激

标签: reactjsmaterial-uithemes

解决方案


实际上,您可能想要的是设置 className 的InputProps

<TextField variant="outlined" InputProps={{ className: classes.root }} />

如果您还想删除字段集的边框(或仅控制该边框),您可以使用以下命令进行设置:

const useStyles = makeStyles(theme =>
  createStyles({
    root: {
      color: green[900],
      "&.Mui-focused": {
        border: "2px solid red",
        '& .MuiOutlinedInput-notchedOutline': {
          border: 'none'
        }
      }
    }
  })
);

您可以在此处找到一个工作示例:检查以下内容:https ://codesandbox.io/s/style-text-field-htbem?file=/src/App.js

您可以在此处找到有关 MUI 与 Input 组件一起使用的不同类的更多信息:https ://material-ui.com/api/input/#css


推荐阅读