【发布时间】:2021-08-14 17:41:06
【问题描述】:
我有一个 Material UI OutlinedInput 在其上使用 MaskedInputfrom react-text-mask,当我最初将文本放入其中并且元素未聚焦时,输入的文本正确显示,但是当我使用此组件关闭对话框窗口并重新打开,出现一些奇怪的行为,文本覆盖占位符文本。
看起来像这样:
当我最初输入文字时:
这是我的这个组件的代码:
const SERIES_MASK = [/\d/, /\d/, " ", /\d/, /\d/];
const useStyles = makeStyles({
inputLabel: {
margin: "-8px 0 0 14px",
},
});
const SeriesMask: FC<{}> = (props) => <MaskedInput {...props} mask={SERIES_MASK} />;
export const DocumentSeriesField: FC<{
name: string;
value: string;
label: string;
error?: string;
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
onBlur: (e: React.FocusEvent<HTMLInputElement>) => void;
}> = ({ name, value, label, error, onChange, onBlur }) => {
const classes = useStyles();
const id = useMemo(() => randomId("series"), []);
return (
<FormControl>
<InputLabel htmlFor={id} error={Boolean(error)} classes={{ root: classes.inputLabel }}>
{label}
</InputLabel>
<OutlinedInput id={id} name={name} value={value} label={label} inputComponent={SeriesMask} error={Boolean(error)} onChange={onChange} onBlur={onBlur} />
<FormHelperText error={Boolean(error)}>{error}</FormHelperText>
</FormControl>
);
};
您能否告诉我这里可能存在什么问题以及如何解决?
【问题讨论】:
-
useStyles工作正常吗?重新打开对话框后,InputLabel似乎没有任何样式 -
@UjinT34 是的,我认为是的。我刚刚从这个 sn-p 中删除了 useStyles 对象,但它看起来像这样: const useStyles = makeStyles({ inputLabel: { margin: "-8px 0 0 14px", }, });
标签: javascript reactjs material-ui frontend text-mask