【问题标题】:Label of Multiple Select is crossed out by the outline of the input field多选的标签被输入字段的轮廓划掉
【发布时间】:2019-05-23 19:28:00
【问题描述】:

我使用 Material-UI 制作了一个多选列表。但是当我选择一个项目时,标签应该缩小并适合输入字段的轮廓。问题是轮廓保持不变,而标签在其后面缩小。

我尝试在 Material-UI 文档中寻找解决方案。似乎没有任何多选列表概述的变体。所以我想知道这是因为没有多选列表的概述变体,还是由于其他原因。

<FormControl
   variant="outlined"
   fullWidth
>
   <InputLabel
      ref={ref => {
         this.InputLabelRef = ref;
      }}
      htmlFor="members"
      error={this.props.touched.members && Boolean(this.props.errors.members)}
   >
      Members
   </InputLabel>
   <Select
      onChange={this.change.bind(null, "members")}
      multiple
      value={this.state.members}
      error={this.props.touched.members && Boolean(this.props.errors.members)}
       input={
          <OutlinedInput
              labelWidth={0}
              name="members"
              id="members"
          />
        }
     >
     <MenuItem value={'Baspa'}>Baspa</MenuItem>
     <MenuItem value={'Plorky'}>Plorky</MenuItem>
     <MenuItem value={'Rizzels'}>Rizzels</MenuItem>
    </Select>

我还做了一个 CodeSandBox: https://codesandbox.io/s/jnlx1vky39

看起来是这样的:

https://imgur.com/a/Wpf7OE0

【问题讨论】:

    标签: reactjs material-ui


    【解决方案1】:

    您遗漏了文档中显示的几部分,这些部分允许大纲知道标签宽度:

      componentDidMount() {
        this.setState({
          labelWidth: ReactDOM.findDOMNode(this.InputLabelRef).offsetWidth
        });
      }
    ... 
     <OutlinedInput labelWidth={this.state.labelWidth} name="members" id="members" />
    

    这是完整的代码:

    【讨论】:

      猜你喜欢
      • 2016-11-14
      • 1970-01-01
      • 2019-07-28
      • 2022-01-24
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 2021-09-28
      相关资源
      最近更新 更多