我想使用样式化函数设置MUI Textfield组件的样式

const StyledTextField = styled(TextField)({ padding: 5 });

我还想在Textfield中设置输入和输入组件的样式.以前我是通过应用样式来做到这一点

<TextField
    InputProps={{ style: { color: 'red' } }}
    inputProps={{ className: '...' }}
/>;

是否可以使用样式化函数设置输入和输入的样式,以便最终只使用已经样式化的StyledTextField组件,而不将额外的样式和类名props 传递给StyledTextfield.

推荐答案

下面的示例显示了如何针对TextField内的不同元素.

  • 未嵌套在另一规则中的css属性应用于FormControl元素(例如下面的margin),这是TextField的最外层元素.
  • 可以使用"& .MuiInputLabel-root": {...}来确定标签元素的目标.
  • ""& .MuiInputBase-root": {...}可用于定位Input元素(相当于通过InputProps传递的样式).
  • "& .MuiInputBase-input": {...}可用于定位input元素(相当于通过inputProps传递的样式).
import * as React from "react";
import { styled } from "@mui/material/styles";
import TextField from "@mui/material/TextField";

const StyledTextField = styled(TextField)({
  margin: 5,
  "& .MuiInputLabel-root:not(.MuiInputLabel-shrink)": {
    transform: "translate(14px, 8px) scale(1)"
  },
  "& .MuiInputLabel-root": {
    color: "green"
  },
  "& .MuiInputLabel-root.Mui-focused": {
    color: "purple"
  },
  "& .MuiInputBase-root": {
    color: "red"
  },
  "& .MuiInputBase-input": {
    padding: 8
  }
});

export default function BasicTextField() {
  return (
    <>
      <TextField id="outlined-basic" label="Default" />
      <StyledTextField id="styled" label="Styled" />
    </>
  );
}

Edit target TextField elements

Reactjs相关问答推荐

react 路由导航不工作,但手动路由工作

如何创建react router v6的自定义子路由?

XChaCha20-Poly1305的解密函数

react -在选项中 Select 我想要显示和图像.但当我 Select 该选项时,我希望控件仅显示该选项的文本部分

如何在整个应用程序中显示通用弹出窗口中的点击事件

未定义发送的数据无法在reactjs中找到原因

如何动态地改变<; Select >;React和Tailwind元素?

警告:遇到两个子元素拥有同一把 keys .键应该是唯一的,以便组件在更新时保持其身份

在 React 中将 MUI 样式外包到单独的文件中?

useEffect内部的RETURN语句在首次按钮点击事件中似乎无效的原因是什么?

React v6 中的公共和私有路由

顶点图表甜甜圈项目边框半径

意外的标记.您可能需要一个合适的加载器来处理这种文件类型.书?.img? /*#__PURE__*/React.createElement("img",

是什么导致了这个令人惊讶的数组导致 React

如何根据react 中的 map 功能一次只打开一个弹出窗口?

组件焦点上的 MUI 更改栏 colored颜色

npm init vite@latest 和 npm init vite 有什么区别?

如何在组件文件夹内的react 组件文件中导入外部css文件?

点击提交后自动添加#

如何从另一个切片中的不同切片获取状态并对其进行处理?