Mar*_*sse 2 html javascript css reactjs material-ui
我正在使用React Material-UI库,我想有条件地覆盖 TextField 的错误颜色。
当错误属于某种类型时,我需要将 helperText、边框、文本和所需的标记颜色更改为黄色。类似的东西:
否则,我想为所有其他类型的错误保留默认颜色(红色)。我试图遵循在这个代码和盒子中使用的相同原则,但我无法掌握需要更改的所有组件,而且我important几乎每次都必须使用关键字才能看到差异。
我设法有条件地改变了这样的颜色helperText:
<TextField
label="Name"
className={formClasses.textField}
margin="normal"
variant="outlined"
required
error={!!errors}
helperText={errors && "Incorrect entry."}
FormHelperTextProps={{classes: {root: getColorType(AnErrorType)}}}
/>
Run Code Online (Sandbox Code Playgroud)
该getColorType会返回一个CSS对象和属性颜色设置为对应给定的错误类型之一。前任:
hardRequiredHintText: {
color: `${theme.palette.warning.light} !important`
},
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法来覆盖 MUI 错误颜色并查看它反映在所有使用它的组件中?
对于每种类型的验证,显示不同的颜色,我们可以将参数传递给makeStyles
import { makeStyles } from "@material-ui/core/styles";
const useStyles = params =>
makeStyles(theme => ({
root: {
}
}));
const Component = () => {
const classes = useStyles(someParams)();
Run Code Online (Sandbox Code Playgroud)
完整代码:
import React from "react";
import "./styles.css";
import { TextField } from "@material-ui/core";
import { makeStyles } from "@material-ui/core/styles";
const useStyles = value =>
makeStyles(theme => ({
root: {
"& .Mui-error": {
color: acquireValidationColor(value)
},
"& .MuiFormHelperText-root": {
color: acquireValidationColor(value)
}
}
}));
const acquireValidationColor = message => {
switch (message) {
case "Incorrect entry":
return "green";
case "Please input":
return "orange";
default:
return "black";
}
};
const ValidationTextField = ({ helperText }) => {
const classes = useStyles(helperText)();
return (
<TextField
label="Name"
margin="normal"
variant="outlined"
required
error={helperText !== ""}
helperText={helperText}
className={classes.root}
/>
);
};
export default function App() {
const data = ["Incorrect entry", "Please input", ""];
return (
<div className="App">
{data.map((x, idx) => (
<ValidationTextField helperText={x} key={idx} />
))}
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4884 次 |
| 最近记录: |