在 TextField 组件中添加元素 - Material UI

Mar*_*inK 12 reactjs material-ui

我想创建具有选择属性但也能够在其中编写自定义文本的输入元素。我正在使用 React 和 Material-UI。

是否可以在 Material-UI 的 TextField 组件内(在输入下方的 div 内)添加元素。

目前:Usluga grupni Pos ....

添加元素:

<div class="MuiFormControl-root-142 ...>
  <label class="MuiFormLabel-root-151 ...>Usluga</label>
  <div class="MuiInput-root-156 ...>
    <input aria-invalid="false" ... list="services" value="">
    <datalist id="services">
      <li tabindex="-1" ...>grupni<span class="MuiTouchRipple-root-82"></span> 
      </li>
      <li tabindex="-1" ...>Pos<span class="MuiTouchRipple-root-82"></span>
      </li>
    ....
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

目前反应:

<TextField
  id="service"
  label="Usluga"
  className={classes.textField}
  margin="normal"
  onChange={handleChange}
  inputProps={{
   list: "services"
  }}
/>
<datalist id="services">
 {
   services.map(option => (
     <MenuItem key={option.id} value={option.service}>
      { option.service }
     </MenuItem>
    ))
 }
</datalist>
Run Code Online (Sandbox Code Playgroud)

如果这是不可能的,还有什么方法可以做到这一点?

Whi*_*bit 24

你可以试试这个方法,它对我有用:)

<TextField
  required
  id='password'
  label='Password'
  onChange={handleOnChange}
  type={toggle.passwordVisibility ? 'text' : 'password'}
  InputProps={{
    endAdornment: (
      <InputAdornment position='end'>
        <IconButton
          aria-label='toggle password visibility'
          onClick={handlePasswordVisibility}
          onMouseDown={handleMouseDownPassword}>
          {toggle.passwordVisibility && <Visibility />}
          {!toggle.passwordVisibility && <VisibilityOff />}
        </IconButton>
      </InputAdornment>
    ),
  }}
/>
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案,按照材料 ui 的设计方式工作,不需要另一个外部包 (2认同)

小智 12

你可以这样做: InputProps={{ endAdornment: <YourComponent /> }}

https://material-ui.com/api/input/


小智 5

你可以试试这个方法,它对我有用:)

 <TextField
          variant="outlined"
          name="rfc"
          size={'small'}
          label="RFC"
          InputProps={{
                endAdornment: (
                 <datalist id="rfc">
                     <option value="XAXX010101000"></option>
                    <option value="XEXX010101000"></option>                          
                </datalist>
                ),
                inputProps: {
                      list: "rfc"
                }
             }}
             
    />
Run Code Online (Sandbox Code Playgroud)

  • 请解释一下您的代码是如何工作的;永远不要只单独发布代码。 (3认同)