【问题标题】:Material UI OutlinedInput label is invisibleMaterial UI OutlinedInput 标签不可见
【发布时间】:2020-09-27 08:45:44
【问题描述】:

我们正在使用 Material UI 中的 OutlinedInput,但未呈现文本标签。如何解决这个问题?

import { Grid, OutlinedInput } from '@material-ui/core';
<Grid container>
  <Grid item xs={12}>
    <OutlinedInput
      label="invisible label"
      placeholder="HELLO, STACKOVERFLOW!"
      value={value}
      onChange={(e) => handleValueChange(e.target.value)}
      fullWidth
    />
  </Grid>
</Grid>

而不是预期的“不可见标签”文本,而是呈现一个空白区域(左上角):

【问题讨论】:

  • 样式好像有问题,可以添加覆盖样式吗?
  • 您找到解决方案了吗?我也有同样的问题。我不使用任何样式
  • 我刚刚写了一个答案@Mateusz。希望对你有帮助

标签: reactjs input react-tsx react-material


【解决方案1】:

我遇到了同样的问题,我将 OutlinedInput 扭曲到 FormControl 中,并将 InputLabe 组件作为标签附加,这解决了我的问题。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

我不认为这个组件是用来单独使用的。在 MUI 文档中,它主要用作其他组件的扩充,例如 TextField

<TextField id="outlined-basic" label="Outlined" variant="outlined" />

如果您在开发工具中检查样式,则似乎是 CSS 属性 visibility: hidden 导致了此问题。实际上,如果您删除该样式,您会看到标签有效。


但是,如果您已经使用此组件构建了大部分应用程序并且您需要显示该标签,则只需使用 MUI 的样式解决方案(例如 makeStyles)覆盖它。另外,使用notched prop为其分配空间

const useStyles = makeStyles({
  customInputLabel: {
    "& legend": {
      visibility: "visible"
    }
  }
});

export default function App() {
  const classes = useStyles();

  return (
    <div className="App">
      <Grid container>
        <Grid item xs={12}>
          <OutlinedInput
            classes={{ notchedOutline: classes.customInputLabel }}
            label="visible label"
            placeholder="HELLO, STACKOVERFLOW!"
            fullWidth
            notched
          />
        </Grid>
      </Grid>
    </div>
  );
}

【讨论】:

  • 这不包括它显示在输入框内的能力。有没有办法做到这一点并在焦点或文本输入时显示图例,就像文本字段标签通常发生的那样?
猜你喜欢
  • 1970-01-01
  • 2019-05-25
  • 1970-01-01
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
  • 2019-11-19
  • 1970-01-01
相关资源
最近更新 更多